Ada dua strategi pengindeksan potensial di sini, tergantung pada mana dari dua tabel yang muncul di sisi kiri gabungan dalam (salah satu tabel berpotensi muncul di kedua sisi gabungan). Mengingat bahwa HotelRoom
tabel kemungkinan berisi lebih banyak catatan daripada Hotel
tabel, saya sarankan menempatkan Hotel
tabel di sisi kiri gabungan. Ini menyiratkan bahwa Hotel
tabel akan dipindai, dan indeks yang digunakan untuk bergabung ke HotelRoom
. Kemudian, kita dapat mencoba menggunakan indeks berikut di HotelRoom
:
CREATE INDEX hotel_room_idx ON HotelRoom (HotelId, Deleted, Enabled, Name, RoomId);
Ini akan mempercepat penggabungan secara substansial, mencakup WHERE
klausa, dan juga mencakup semua kolom di pilih di HotelRoom
. Perhatikan bahwa indeks sederhana berikut mungkin juga sangat efektif:
CREATE INDEX hotel_room_idx ON HotelRoom (HotelId, Deleted, Enabled);
Ini hanya mencakup bergabung dan WHERE
klausa, tetapi MySQL mungkin masih memilih untuk menggunakannya.