Какой из этих методов обеспечивает наиболее быструю загрузку страницы? - PullRequest
0 голосов
/ 05 марта 2011

Я строю базу данных в MySQL, к которой будут обращаться PHP-скрипты.У меня есть таблица, которая является потоком активности.Это включает в себя все, что происходит на веб-сайте (следит за многими разными вещами, нравится, голосование и т. Д.).Из этого потока действий я собираюсь запустить алгоритм для каждого пользователя в зависимости от его активности и отобразить соответствующую активность.Должен ли я создать другую таблицу, в которой будет храниться действие для каждого пользователя после запуска алгоритма в действии, или мне следует запускать алгоритм для таблицы действий каждый раз, когда пользователь получает доступ к сайту?

ОБНОВЛЕНИЕ: (эточто выше, за исключением, перефразировано, надеюсь, в более понятном виде)

У меня есть таблица базы данных с именем activity.Эта таблица создает новую строку каждый раз, когда действие выполняется пользователем на веб-сайте.

Каждый раз, когда пользователь входит в систему, я собираюсь запустить алгоритм для новых строк (с момента последнего входа пользователя) втаблица (activity), которая к ним относится.Например, если пользователь следует за пользователем, который проголосовал за публикацию в потоке действий, эта публикация будет отображаться при входе пользователя в систему. Я хочу, чтобы у пользователя была возможность доступа к предыдущему контенту, применяемому к ним.Будет ли проще создать еще одну таблицу, в которой будут сохранены строки, которые уже были обработаны с помощью алгоритма, кроме прикрепленных к именам отдельных пользователей?(строка может относиться к нескольким различным пользователям)

Ответы [ 2 ]

1 голос
/ 05 марта 2011

Я бы начал с одной таблицы и соответствующих индексов.Используя оператор объединения, вы можете выполнить несколько запросов (используя разные индексы), а затем объединить все результаты вместе.

В качестве примера, давайте предположим, что вы дружите с пользователями 37, 42 и 56 иувлекаюсь баскетболом и вязанием спицами.И, давайте предположим, что у вас есть индекс на user_id и индекс на тему.Этот запрос должен быть достаточно быстрым.

SELECT * FROM activity WHERE user_id IN (37, 42, 56)
UNION DISTINCT
SELECT * FROM activity WHERE subject IN ("basketball", "knitting")
ORDER BY created
LIMIT 50
0 голосов
/ 05 марта 2011

Я бы порекомендовал отследить вашего конкретного пользователя activities в отдельной таблице, и тогда при входе в систему вы сможете более легко отобразить все действия пользователя, которые с ними связаны. то есть. Поэтому, если пользователь, например, увлекается бейсболом и хоккеем, вы можете извлечь его из своей недавней активности, а затем перейти к своей таблице «все действия» и взять из нее соответствующие предметы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...