Det finns två potentiella indexeringsstrategier här, beroende på vilken av de två tabellerna som visas på vänster sida av den inre kopplingen (endera tabellen kan eventuellt visas på vardera sidan av kopplingen). Med tanke på att HotelRoom Tabellen innehåller sannolikt många fler poster än Hotel tabell, skulle jag föreslå att du placerar Hotel bord på vänster sida av sammanfogningen. Detta skulle innebära att Hotel tabellen ska skannas och indexet används för kopplingen till HotelRoom . Sedan kan vi prova att använda följande index på HotelRoom :
CREATE INDEX hotel_room_idx ON HotelRoom (HotelId, Deleted, Enabled, Name, RoomId);
Detta bör påskynda sammanfogningen avsevärt, täcker WHERE och täcker även alla kolumner i select on HotelRoom . Observera att följande förenklade index också kan vara mycket effektivt:
CREATE INDEX hotel_room_idx ON HotelRoom (HotelId, Deleted, Enabled);
Detta täcker bara sammanfogningen och WHERE klausul, men MySQL kan fortfarande välja att använda den.