Я думал о денормализации данных в ответ на большое количество трафика. Есть несколько очевидных трюков — ведение счета в другой таблице и использование транзакций для минимизации времени поиска.
Итак, я рассматривал систему, в которой несколько пользователей могли иметь несколько друзей. И скажем, если бы у вас было миллион пользователей, вы могли бы иметь очень большую таблицу для просмотра каждый раз, когда вы хотите загрузить друзей. В этом я использовал бы таблицу, которая содержала событие друга для каждого взаимодействия. Также поле отправителя и получателя. В этом все еще будет много потенциальных записей / трафика.
Теперь я не очень разбираюсь в настройке SQL или в тех случаях, когда слишком много денормализации, но мне было интересно, имеет ли смысл хранить быстрый список друзей пользователей в формате CSV (управляйте этим при изменении событий друзей — внутри транзакции), затем передать это myqsl? Что-то вроде:
SELECT * FROM FRIENDS WHERE ID IN (1,2,3)
Теперь, чтобы предотвратить SQL-инъекции, MySQL при запуске оператора удаляет все, кроме первого элемента в CSV, так что он будет сканировать только 1. Очевидно, что есть веская причина.
Теперь этот запрос всегда инициируется системой (нет ввода от пользователя), поэтому ввод должен быть чистым / не подлежать внедрению, чтобы я мог реализовать его как нефильтрованный запрос. Не вызывать хранимую процедуру ….? ….
Как это звучит? В этом случае и расширение — имеет ли смысл IN CLAUSE? Может ли MySQL обрабатывать много вызовов для стольких записей?
Любая помощь с этим будет принята с благодарностью!
Задача ещё не решена.
Других решений пока нет …