Ci sono due potenziali strategie di indicizzazione qui, a seconda di quale delle due tabelle appare sul lato sinistro del join interno (entrambe le tabelle potrebbero potenzialmente apparire su entrambi i lati del join). Dato che il HotelRoom è probabile che la tabella contenga molti più record rispetto a Hotel tabella, suggerirei di posizionare il Hotel tabella sul lato sinistro del join. Ciò implicherebbe che l'Hotel la tabella verrebbe scansionata e l'indice utilizzato per il join a HotelRoom . Quindi, possiamo provare a utilizzare il seguente indice su HotelRoom :
CREATE INDEX hotel_room_idx ON HotelRoom (HotelId, Deleted, Enabled, Name, RoomId);
Questo dovrebbe velocizzare sostanzialmente il join, copre il WHERE clausola e copre anche tutte le colonne nella selezione su HotelRoom . Nota che anche il seguente indice semplificato potrebbe essere molto efficace:
CREATE INDEX hotel_room_idx ON HotelRoom (HotelId, Deleted, Enabled);
Questo copre solo il join e WHERE clausola, ma MySQL potrebbe comunque scegliere di utilizzarla.