Der er to potentielle indekseringsstrategier her, afhængigt af hvilken af de to tabeller, der vises på venstre side af den indre joinforbindelse (en af tabellerne kan potentielt vises på hver side af joinforbindelsen). Da HotelRoom
tabellen indeholder sandsynligvis mange flere poster end Hotel
tabel, vil jeg foreslå at placere Hotel
bord i venstre side af sammenføjningen. Dette ville indebære, at Hotel
tabellen ville blive scannet, og indekset brugt til sammenføjningen til HotelRoom
. Derefter kan vi prøve at bruge følgende indeks på HotelRoom
:
CREATE INDEX hotel_room_idx ON HotelRoom (HotelId, Deleted, Enabled, Name, RoomId);
Dette bør fremskynde joinforbindelsen betydeligt, dækker WHERE
klausul, og dækker også alle kolonner i select on HotelRoom
. Bemærk, at følgende forenklede indeks også kan være meget effektivt:
CREATE INDEX hotel_room_idx ON HotelRoom (HotelId, Deleted, Enabled);
Dette dækker kun sammenføjningen og WHERE
klausul, men MySQL kan stadig vælge at bruge den.