Как получить статью с наибольшим количеством голосов, за день, за неделю, за месяц или навсегда? - PullRequest
0 голосов
/ 25 июня 2011

У меня есть система голосования, которая на самом деле проста.

voice_id, user_id, article_id

Теперь мне нужно иметь возможность выбрать лучшую статью за день, неделю, месяц, год и навсегда.

Хотя я мог бы добавить столбец DATETIME, а затем использовать функцию mysql, чтобы получить голос МЕЖДУ или чем-то еще, и использовать ИНТЕРВАЛ ДАТЫ и другие ОПЕРАЦИИ ДАТЫ.

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

Кроме того, мне интересно, если мне нужно сделать это с точки зрения календаря, это означает, что «в месяц» может быть не от «1 до 31», а от «12 до 12», пересекающих два месяца.

Есть идеи / отзывы?

1 Ответ

1 голос
/ 25 июня 2011

Если наименьшей единицей представления данных является день, я бы начал со столбца DATE и запросов SQL, чтобы определить количество голосов за интервал времени.

Если он не работает достаточно хорошо с вашим количеством данных, вы можете оптимизировать. Вместо добавления столбцов у вас также может быть другая структура таблицы для хранения итогов за период. Тогда расчет будет выполняться на вставках, а не на каждом выборе.

О календарных месяцах, которые зависят от требований системы.

Какой бы вариант вы ни использовали, обязательно учитывайте эффекты разных часовых поясов пользователя и сервера!

...