Có hai chiến lược lập chỉ mục tiềm năng ở đây, tùy thuộc vào bảng nào trong số hai bảng xuất hiện ở phía bên trái của phép nối bên trong (một trong hai bảng có thể xuất hiện ở cả hai phía của phép nối). Cho rằng HotelRoom
bảng có thể chứa nhiều bản ghi hơn Hotel
bàn, tôi khuyên bạn nên đặt Hotel
bảng ở bên trái của phép nối. Điều này có nghĩa là Hotel
bảng sẽ được quét và chỉ mục được sử dụng để tham gia vào HotelRoom
. Sau đó, chúng tôi có thể thử sử dụng chỉ mục sau trên HotelRoom
:
CREATE INDEX hotel_room_idx ON HotelRoom (HotelId, Deleted, Enabled, Name, RoomId);
Điều này sẽ tăng tốc độ tham gia đáng kể, bao gồm WHERE
và cũng bao gồm tất cả các cột trong phần chọn trên HotelRoom
. Lưu ý rằng chỉ mục được đơn giản hóa sau đây cũng có thể rất hiệu quả:
CREATE INDEX hotel_room_idx ON HotelRoom (HotelId, Deleted, Enabled);
Điều này chỉ bao gồm tham gia và WHERE
nhưng MySQL vẫn có thể chọn sử dụng nó.