Hãy xem xét hai sau đây giải thích:Không có chỉ mục nào trên! =?
EXPLAIN SELECT * FROM sales WHERE title != 'The'
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE sales ALL title NULL NULL NULL 41707 Using where
Và -
EXPLAIN SELECT * FROM sales WHERE title = 'The'
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE sales ref title title 767 const 1 Using where
Tại sao truy vấn !=
có một chìa khóa NULL
? Tại sao nó không sử dụng title
? Điều gì gây ra tuyên bố =
để có thể sử dụng chỉ mục chứ không phải là !=
?
Để mở rộng trên đó - chọn mỗi hàng mà tiêu đề không phải là "The" sẽ trả về hầu hết mọi hàng trong bảng, vì vậy không có điểm nào trong việc sử dụng chỉ mục cho truy vấn này chút nào. (Vì bạn sẽ phải quét toàn bộ bảng để trả lại tất cả các hàng đó.) – duskwuff