Urutan indeks penting ketika ketentuan kueri Anda hanya berlaku untuk PART dari indeks. Pertimbangkan:
-
SELECT * FROM table WHERE first_name="john" AND last_name="doe"
-
SELECT * FROM table WHERE first_name="john"
-
SELECT * FROM table WHERE last_name="doe"
Jika indeks Anda adalah (first_name
, last_name
) kueri 1 dan 2 akan menggunakannya, kueri #3 tidak. Jika indeks Anda adalah (last_name
, first_name
) kueri 1 dan 3 akan menggunakannya, kueri #2 tidak. Mengubah urutan kondisi dalam klausa WHERE tidak berpengaruh dalam kedua kasus tersebut.
Detailnya di sini
Perbarui :
Jika hal di atas tidak jelas - MySQL hanya dapat menggunakan indeks jika kolom dalam kondisi kueri membentuk awalan paling kiri dari indeks. Kueri #2 di atas tidak dapat menggunakan (last_name
, first_name
) indeks karena hanya berdasarkan first_name
dan first_name
BUKAN awalan paling kiri dari (last_name
, first_name
) indeks.
Urutan kondisi DALAM kueri tidak masalah; kueri #1 di atas akan dapat menggunakan (last_name
, first_name
) indeks baik-baik saja karena kondisinya first_name
dan last_name
dan, jika digabungkan, keduanya membentuk awalan paling kiri dari (last_name
, first_name
) indeks.