Aturan umum untuk indeks adalah menampar satu ke bidang apa pun yang digunakan dalam WHERE
atau JOIN
ayat.
Karena itu, ada beberapa pengoptimalan yang dapat Anda lakukan. Jika Anda TAHU bahwa kombinasi bidang tertentu adalah satu-satunya yang akan digunakan di WHERE pada tabel tertentu, maka Anda dapat membuat kunci multi-bidang tunggal hanya pada bidang tersebut, mis.
INDEX (field1, field2, field5)
v.s.
INDEX (field1),
INDEX (field2),
INDEX (field5)
Indeks multi-bidang bisa lebih efisien dalam banyak kasus, dibandingkan harus memindai banyak indeks. Kelemahannya adalah indeks multi-bidang hanya dapat digunakan jika bidang yang dimaksud benar-benar digunakan dalam klausa WHERE.
Dengan kueri sampel Anda, sejak element
dan field_id
berada di ketiga indeks, Anda mungkin lebih baik membaginya menjadi indeks khusus mereka sendiri. Jika ini adalah bidang yang dapat diubah, maka lebih baik menyimpannya sebagai indeks khusus mereka sendiri. misalnya jika Anda harus mengubah field_id
secara massal, DB harus memperbarui 3 indeks berbeda, vs. memperbarui hanya satu yang berdedikasi.
Tetapi semuanya bermuara pada pembandingan - uji pengaturan khusus Anda dengan berbagai pengaturan indeks dan lihat mana yang berkinerja terbaik. Aturan praktis berguna, tetapi tidak selalu berhasil 100%.