База данных новостных статей - должен ли я использовать индекс в поле date_publish для более быстрого выбора - PullRequest
1 голос
/ 09 февраля 2012

Нужен совет, как оптимизировать мою таблицу статей для операций чтения. У меня есть таблица статей, где я храню статьи, которые пишут редакторы. Существует требование, чтобы редакторы могли в будущем вводить статью с установленным значением date_publish. Эти статьи не могут быть отображены на титульном листе в любое время, пока не будет опубликована дата publish_date.

Итак, мой вопрос здесь: должен ли я иметь индекс в поле date_publish для лучшей производительности? Я использую MySQL database, с InnoDB двигателем. Я храню даты как unixtimestamps в unsigned INT(11) поле.

Когда я читаю список статей для титульной страницы, я делаю что-то вроде этого:

SELECT articles.* FROM articles WHERE date_publish < $time

1 Ответ

1 голос
/ 09 февраля 2012

Добавление индекса для столбца date_publish оптимизирует следующий простой запрос:

SELECT * FROM articles WHERE date_publish < $time

Однако, если вы измените запрос, например добавите предложение ORDER к порядку по столбцу, отличному от date_publish, для оптимизации запроса может потребоваться составной (многоколонный) индекс.

EDIT

Чтобы иметь возможность полностью использовать индекс, индекс «покрытия» должен включать все столбцы в предложениях WHERE, JOIN и ORDER, обычно в таком порядке. Итак, если у вас есть диапазон в вашем предложении WHERE для date_publish и ORDER BY article_name, вы можете захотеть индексировать оба столбца (date_publish, article_name). Таким образом, MySQL может использовать индекс как для выбора, так и для сортировки.

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