sql >> Databasteknik >  >> RDS >> Mysql

Vilket index ska jag använda när jag använder JOIN på PRIMARY KEY

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.



  1. Hur får man en korrekt dump med mysqldump och single-transaction när DDL används samtidigt?

  2. Python-utdata ersätter icke-ASCII-tecken med �

  3. Python SQL – Hur man använder SQLite-, MySQL- och PostgreSQL-databaserna med Python

  4. Beställa varor med matchande taggar efter antal taggar som matchar