sql >> Database >  >> RDS >> Mysql

Welke index moet ik gebruiken bij het gebruik van JOIN op PRIMARY KEY

Er zijn hier twee mogelijke indexeringsstrategieën, afhankelijk van welke van de twee tabellen aan de linkerkant van de inner join wordt weergegeven (beide tabellen kunnen mogelijk aan weerszijden van de join verschijnen). Aangezien de HotelRoom tabel bevat waarschijnlijk veel meer records dan de Hotel tafel, stel ik voor om het Hotel . te plaatsen tabel aan de linkerkant van de join. Dit zou betekenen dat het Hotel tabel zou worden gescand, en de index die werd gebruikt voor de join naar HotelRoom . Dan kunnen we proberen de volgende index te gebruiken op HotelRoom :

CREATE INDEX hotel_room_idx ON HotelRoom (HotelId, Deleted, Enabled, Name, RoomId);

Dit zou de samenvoeging aanzienlijk moeten versnellen, dekt de WHERE clausule, en omvat ook alle kolommen in de selectie op HotelRoom . Merk op dat de volgende vereenvoudigde index ook erg effectief kan zijn:

CREATE INDEX hotel_room_idx ON HotelRoom (HotelId, Deleted, Enabled);

Dit dekt alleen de join en WHERE clausule, maar MySQL kan er nog steeds voor kiezen om het te gebruiken.



  1. Mysql-poort al in gebruik

  2. query invoegen met ajax zonder de hele pagina opnieuw te laden

  3. Programmatisch een tabel maken met MyBatis en MySql

  4. PostgreSQL voor Windows ontwikkelen, deel 2