Положить индекс на поле даты в MySQL
-
27-09-2019 - |
Вопрос
Есть ли какая-либо реальная выгода для меня вкладывать индексы на полей даты, которые будут в основном использоваться в запросах, использующих такие вещи.
dateField < 'var'
А также
'var' BETWEEN dateField1 AND dateField2
Поиски много делают много, но я никогда не делаю прямого сравнения "=" на них.
Решение
Ну конечно; естественно. Поиски диапазона выиграют от индекса, так же, как и поиск по равенству.
Цитируя из MySQL Reference Manual :: Как MySQL использует индексы:
Индексные характеристики B-деревьев
Индекс B-дерева может использоваться для сопоставления колонны в выражениях, которые используют =,>,> =, <, <= или между операторами. Индекс также может использоваться для сравнения, если аргумент понравился, является постоянной строкой, которая не запускается с символа подстановки.
В некоторых ситуациях оптимизатор может решить не использовать индекс, если диапазон окажется слишком большим, поскольку сканирование таблицы может быть фактически быстрее. Использовать EXPLAIN
Чтобы увидеть, какие (если какие-либо) индексы будут использоваться в вашем запросе.