Saya punya tabel MySQL yang sangat besar dengan sekitar 150.000 baris data. Saat ini, ketika saya mencoba dan menjalankan
SELECT * FROM table WHERE id = '1';
kode berfungsi dengan baik karena bidang ID adalah indeks utama. Namun, untuk pengembangan terbaru dalam proyek ini, saya harus mencari basis data dengan bidang lain. Sebagai contoh:
SELECT * FROM table WHERE product_id = '1';
Bidang ini sebelumnya tidak diindeks; Namun, saya telah menambahkan satu, jadi mysql sekarang mengindeks bidang, tetapi ketika saya mencoba menjalankan kueri di atas, ia berjalan sangat lambat. Kueri EXPLAIN mengungkapkan bahwa tidak ada indeks untuk bidang product_id ketika saya sudah menambahkannya, dan sebagai hasilnya kueri membutuhkan waktu mulai dari 20 menit hingga 30 menit untuk mengembalikan satu baris.
Hasil lengkap EXPLAIN saya adalah:
| id | select_type | table | type | possible_keys| key | key_len | ref | rows | Extra |
+----+-------------+-------+------+--------------+------+---------+------+-------+------------------+
| 1 | SIMPLE | table | ALL | NULL | NULL | NULL | NULL |157211 | Using where |
+----+-------------+-------+------+--------------+------+---------+------+-------+------------------+
Mungkin bermanfaat untuk dicatat bahwa saya baru saja melihatnya, dan bidang ID disimpan sebagai INT sedangkan bidang PRODUCT_ID disimpan sebagai VARCHAR. Mungkinkah ini sumber masalahnya?
EXPLAIN
hasil lengkap ? Apakah Anda yakin tidak ada indeks? Atau ada indeks di sana, tetapi MySQL memilih untuk tidak menggunakannya?