Tôi đã thiết lập bảng của mình chỉ với một chỉ mục trên did_status (doing_status = INT):
Khi tôi sử dụng:
EXPLAIN SELECT * FROM reminder WHERE done_status=2
Tôi lấy lại cái này:
id select_type loại bảng có thể_key key key_len ref rows Extra 1 nhắc nhở SIMPLE TẤT CẢ xong_status NULL NULL NULL 5 Sử dụng ở đâu
Nhưng khi tôi ban hành lệnh này:
EXPLAIN SELECT * FROM reminder WHERE done_status=1
Tôi nhận được trả lại như sau:
id select_type loại bảng có thể_key key key_len ref rows Extra 1 nhắc nhở SIMPLE ref xong_status xong_status 4 const 2
Các EXPLAIN
chương trình với tôi rằng nó sử dụng 5 hàng, lần thứ hai 2 hàng.
Tôi không nghĩ rằng chỉ số được sử dụng, nếu tôi hiểu nó ngay lần đầu tiên, nó sẽ cho tôi 3 hàng. Tôi làm gì sai?
SHOW INDEX FROM reminder
:
Bảng Non_unique Key_name Seq_in_index Cột_name Collation Cardinality Sub_part Đóng gói Null Index_type Nhận xét Index_comment nhắc nhở 1 xong_status 1 xong_status A 5 NULL NULL BTREE
giải thích mở rộng:
id select_type loại bảng could_keys key key_len ref hàng được lọc Thêm 1 nhắc nhở SIMPLE ref xong_status xong_status 4 const 2 100.00
show warnings
không cho thấy bất cứ điều gì quan tâm.