Размещение индекса в поле даты в MySQL - PullRequest
5 голосов
/ 01 октября 2010

Будет ли какая-то реальная польза для меня, если я добавлю индексы в поля даты, которые будут в основном использоваться в запросах, использующих такие вещи, как.

dateField < 'var'

И

'var' BETWEEN dateField1 AND dateField2

Поиски сделаны, но я никогда не сравниваю их "=".

1 Ответ

16 голосов
/ 01 октября 2010

Да, конечно.Поиск по диапазону получит выгоду от индекса так же, как поиск по равенству.

Цитирование из Справочного руководства MySQL :: Как MySQL использует индексы :

Характеристики индекса B-дерева

Индекс B-дерева можно использовать для сравнения столбцов в выражениях, в которых используются операторы =,>,> =, <, <= или BETWEEN.Индекс также можно использовать для сравнений LIKE, если аргумент LIKE является константной строкой, которая не начинается с символа подстановки. </p>

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

...