Zde existují dvě potenciální strategie indexování v závislosti na tom, která z těchto dvou tabulek se objeví na levé straně vnitřního spojení (kterákoli tabulka se může potenciálně objevit na kterékoli straně spojení). Vzhledem k tomu, že HotelRoom
tabulka pravděpodobně obsahuje mnohem více záznamů než Hotel
stůl, navrhoval bych umístit Hotel
stůl na levé straně spoje. To by znamenalo, že Hotel
bude naskenována tabulka a index použitý pro připojení k HotelRoom
. Pak můžeme zkusit použít následující index na HotelRoom
:
CREATE INDEX hotel_room_idx ON HotelRoom (HotelId, Deleted, Enabled, Name, RoomId);
To by mělo podstatně urychlit spojení, pokrývá WHERE
klauzule a také pokrývá všechny sloupce ve výběru na HotelRoom
. Všimněte si, že následující zjednodušený index může být také velmi účinný:
CREATE INDEX hotel_room_idx ON HotelRoom (HotelId, Deleted, Enabled);
To se týká pouze spojení a WHERE
klauzule, ale MySQL se může přesto rozhodnout ji použít.