Эффективный дизайн БД для получения «самых популярных» строк таблицы - PullRequest
1 голос
/ 05 февраля 2010

Я планирую создать таблицу mysql 5 (myISAM), которая будет содержать x тысяч строк данных. Каждая строка будет иметь поле подсчета, и строки с 20 самыми высокими значениями счета будут извлечены довольно много, вероятно, в соотношении один к одному для каждого обновления строки. Число x тысяч, отсутствующее в этих 20, обычно не будет получено.

Каковы варианты выбора эффективного метода запроса для 20 значений верхнего счета. Данные не имеют в реальном времени, но это помогает!

Ответы [ 3 ]

1 голос
/ 05 февраля 2010

Добавьте индекс в поле подсчета, затем просто обычный запрос:

SELECT * FROM myTable ORDER BY countField DESC LIMIT 20;
0 голосов
/ 05 февраля 2010

Создать индекс в поле счета. Готово.

0 голосов
/ 05 февраля 2010

Каждые пять минут очищайте, а затем копируйте 20 лучших в отдельную таблицу. Чтобы получить топ-20, просто обратитесь к этой таблице. Готово!

(Или вы могли бы потратить следующие несколько часов на то, чтобы настроить свой запрос, параметры и индексы и сделать все это "правильным".)

...