Tôi sẽ đi ra ngoài và nói rằng đó là vì bạn đang sử dụng công cụ MyISAM.
Nó hoạt động hoàn toàn tốt với INNODB như bạn có thể thấy trong Câu trả lời này của tôi.
Tôi sẽ cố gắng tìm ra ít nhất 1 tài liệu tham khảo danh giá về vấn đề này.
Tại đây, Loại tham gia phạm vi , rõ ràng là một tiêu điểm INNODB vì nó là công cụ mặc định. Và khi không được đề cập rõ ràng trong sổ tay hướng dẫn trong một số hệ thống phân cấp tài liệu, nó sẽ được giả định.
Lưu ý, không có gì liền kề về id trong liên kết ví dụ của tôi. Có nghĩa là, đừng siêu tập trung vào type=range
trong đầu ra EXPLAIN của nó. Tốc độ đạt được thông qua Trình tối ưu hóa (CBO).
cardinality
trong ví dụ của tôi là rất cao (4,3 Triệu). Số lượng id mục tiêu tương đối thấp (1000). Chỉ mục được sử dụng.
Tình huống của bạn có thể ngược lại:số lượng bản số của bạn có thể cực kỳ thấp, chẳng hạn như 3, và trình tối ưu hóa quyết định từ bỏ việc sử dụng chỉ mục.
Để kiểm tra chỉ mục của bạn cardinality
, hãy xem Trang thủ công HIỂN THỊ Cú pháp INDEX
.
Một cuộc gọi đơn giản như:
show index from ratings;
+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| ratings | 0 | PRIMARY | 1 | id | A | 4313544 | NULL | NULL | | BTREE | | |
+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+