Saya akan mengambil risiko dan mengatakan itu karena Anda menggunakan mesin MyISAM.
Ini bekerja dengan baik dengan INNODB seperti yang dapat dilihat di Jawaban ini milikku.
Saya akan mencoba untuk menakut-nakuti setidaknya 1 referensi terhormat tentang masalah ini.
Di sini, Rentang Jenis Gabung , jelas merupakan fokus INNODB karena merupakan mesin default. Dan ketika tidak disebutkan secara eksplisit dalam manual dalam beberapa hierarki dokumentasi, itu dianggap.
Catatan, tidak ada yang bersebelahan dengan id di tautan contoh saya. Artinya, jangan terlalu fokus pada type=range
dalam output EXPLAIN-nya. Kecepatan dicapai melalui Pengoptimal (CBO).
cardinality
dalam contoh saya sangat tinggi (4,3 Juta). Jumlah target id relatif rendah (1000). Indeks digunakan.
Situasi Anda mungkin sebaliknya:kardinalitas Anda mungkin sangat rendah, seperti 3, dan pengoptimal memutuskan untuk mengabaikan penggunaan indeks.
Untuk memeriksa cardinality
indeks Anda , lihat Halaman Manual TAMPILKAN Sintaks INDEKS
.
Panggilan sederhana seperti:
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 | | |
+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+