Тук има две потенциални стратегии за индексиране, в зависимост от това коя от двете таблици се появява от лявата страна на вътрешното съединение (всяка таблица може да се появи от двете страни на съединението). Като се има предвид, че HotelRoom
таблицата вероятно съдържа много повече записи от Hotel
таблица, предлагам да поставите Hotel
маса от лявата страна на съединението. Това би означавало, че Hotel
таблицата ще бъде сканирана и индексът, използван за присъединяването към HotelRoom
. След това можем да опитаме да използваме следния индекс в HotelRoom
:
CREATE INDEX hotel_room_idx ON HotelRoom (HotelId, Deleted, Enabled, Name, RoomId);
Това би трябвало да ускори значително присъединяването, покрива WHERE
клауза, а също така обхваща всички колони в избора на HotelRoom
. Имайте предвид, че следният опростен индекс също може да бъде много ефективен:
CREATE INDEX hotel_room_idx ON HotelRoom (HotelId, Deleted, Enabled);
Това обхваща само присъединяването и WHERE
клауза, но MySQL все пак може да избере да го използва.