Skonfigurowałem tabelę z indeksem tylko na done_status (done_status = INT):

Kiedy używam:
EXPLAIN SELECT * FROM reminder WHERE done_status=2
Odzyskuję to:
id select_type typ tabeli możliwe klucze klucze key_len ref wiersze Extra 1 PROSTE przypomnienie WSZYSTKO done_status NULL NULL NULL 5 Używanie gdzie
Ale kiedy wydam to polecenie:
EXPLAIN SELECT * FROM reminder WHERE done_status=1
Otrzymuję następujące informacje:
id select_type typ tabeli możliwe klucze klucze key_len ref wiersze Extra 1 SIMPLE przypomnienie ref done_status done_status 4 const 2
Do EXPLAINpokazuje mi, że używa 5 rzędów, po raz drugi 2 rzędy.
Nie sądzę, że indeks jest używany, jeśli dobrze go zrozumiałem, powinien dać mi 3 wiersze. Co robię źle?
SHOW INDEX FROM reminder:
Tabela Non_unique nazwa_klucza Seq_in_index nazwa_kolumny Sortowanie Liczność Podpunkt Pakowane Null Typ indeksu Komentarz Indeks przypomnienie 1 done_status 1 done_status A 5 NULL NULL BTREE
wyjaśnij rozszerzone:
id select_type typ tabeli możliwy_klucz klucz key_len ref wiersze filtrowane Extra 1 PROSTE przypomnienie przypomnienie done_status done_status 4 const 2 100.00
show warnings nie okazał niczego interesującego.