MySQL, не используя индекс в ДАТУ при использовании с' <' или'>' операторы?

Я использую, объясняют для тестирования этих запросов. Типом седла является ДАТА

это использует индекс:

explain SELECT events.* FROM events WHERE events.date = '2010-06-11' 

это не делает

explain SELECT events.* FROM events WHERE events.date >= '2010-06-11' 

индексируйте следующим образом (phpmyadmin)

Action  Keyname Type    Unique  Packed  Field   Cardinality Collation   Null    Comment
Edit    Drop    PRIMARY BTREE   Yes No  event_id    18  A       
Edit    Drop    date    BTREE   No  No  date    0   A       

я замечаю, что кардинальность 0, хотя существуют некоторые строки с той же датой..

5
задан Haroldo 18 June 2010 в 10:53
поделиться

1 ответ

Если MySQL не использует индекс, он видел ваш запрос и оценил, что сканирование таблицы, вероятно, будет быстрее, чем использование индекса (с точки зрения необходимых операций ввода-вывода/диска). Вы можете использовать FORCE INDEX и проверить, будет ли этот запрос действительно быстрее при использовании индекса или нет.

SELECT events.* FROM events
FORCE INDEX (date)
WHERE events.date >= '2010-06-11';
7
ответ дан 14 December 2019 в 08:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: