Mengapa MySQL Mengabaikan Lajur Berindeks Apabila Menggunakan Klausa WHERE IN?
Dalam MySQL, klausa WHERE IN sering digunakan untuk menyemak sama ada nilai lajur sepadan dengan mana-mana set nilai yang ditentukan. Walau bagaimanapun, dalam beberapa kes, pembangun menyedari bahawa MySQL tidak menggunakan indeks sedia ada untuk pertanyaan WHERE IN ini, membawa kepada imbasan jadual penuh dan prestasi yang lemah.
Memahami Penggunaan Indeks MySQL
MySQL menggunakan pengoptimum berasaskan kos untuk menentukan pelan pelaksanaan yang paling cekap untuk pertanyaan. Pengoptimum ini mengambil kira pelbagai faktor, termasuk ketersediaan indeks, saiz jadual dan bilangan baris yang berpotensi dipengaruhi oleh pertanyaan.
Apabila menggunakan klausa WHERE IN, MySQL menilai sama ada kos mengakses lajur yang diindeks untuk setiap nilai dalam senarai IN melebihi kos imbasan jadual. Jika pengoptimum menentukan bahawa imbasan jadual adalah lebih cekap, ia akan memilih pilihan ini walaupun terdapat indeks.
Punca Potensi untuk Pengelakan Indeks
Terdapat beberapa kemungkinan sebab MySQL mungkin mengelak daripada menggunakan indeks untuk WHERE IN pertanyaan:
Cara-Cara untuk Meningkatkan Penggunaan Indeks
Untuk meningkatkan penggunaan indeks untuk pertanyaan WHERE IN, pertimbangkan perkara berikut tindakan:
Atas ialah kandungan terperinci Mengapa MySQL Tidak Sentiasa Menggunakan Indeks dengan Klausa WHERE IN?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!