Я створив свою таблицю з індексом лише на done_status (done_status = INT):
Коли я використовую:
EXPLAIN SELECT * FROM reminder WHERE done_status=2
Я повертаю це:
id таблиця вибору_типу Тип таблиці можливий_кілька клавіша key_len ref рядки Extra 1 ПРОСТЕ нагадування ВСЕ done_status NULL NULL NULL 5 Використання де
Але коли я видаю цю команду:
EXPLAIN SELECT * FROM reminder WHERE done_status=1
Я отримую таке повернення:
id таблиця вибору_типу Тип таблиці можливий_кілька клавіша key_len ref рядки Extra 1 ПРОСТЕ нагадування ref done_status done_status 4 const 2
На EXPLAIN
мені показує , що він використовує 5 рядків, другий раз 2 рядки.
Я не думаю, що індекс використовується, якщо я зрозумів це правильно в перший раз, він повинен дати мені 3 ряди. Що я роблю неправильно?
SHOW INDEX FROM reminder
:
Таблиця Non_unique Key_name Seq_in_index Ім'я стовпця Кардинальність зіставлення Підзапчастина Упакована Нульова індекс_тип Коментар Index_comment нагадування 1 done_status 1 done_status A 5 NULL NULL BTREE
поясніть розширено:
ідентифікатор вибору типу типу таблиці можливий_кількість клавіша key_len ref рядки відфільтровано Extra 1 ПРОСТЕ нагадування ref done_status done_status 4 const 2 100
show warnings
не виявив нічого цікавого.