sql >> Databáze >  >> RDS >> Mysql

Jaký index mám použít při použití JOIN na PRIMARY KEY

Zde existují dvě potenciální strategie indexování v závislosti na tom, která z těchto dvou tabulek se objeví na levé straně vnitřního spojení (kterákoli tabulka se může potenciálně objevit na kterékoli straně spojení). Vzhledem k tomu, že HotelRoom tabulka pravděpodobně obsahuje mnohem více záznamů než Hotel stůl, navrhoval bych umístit Hotel stůl na levé straně spoje. To by znamenalo, že Hotel bude naskenována tabulka a index použitý pro připojení k HotelRoom . Pak můžeme zkusit použít následující index na HotelRoom :

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

To by mělo podstatně urychlit spojení, pokrývá WHERE klauzule a také pokrývá všechny sloupce ve výběru na HotelRoom . Všimněte si, že následující zjednodušený index může být také velmi účinný:

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

To se týká pouze spojení a WHERE klauzule, ale MySQL se může přesto rozhodnout ji použít.



  1. Vysvětlení rámce MySQL High Availability Framework – Část I:Úvod

  2. Funkce volání MySqlCommand

  3. SQL Server Clustering z pohledu Oracle RAC

  4. Prostorový index v MySQL – CHYBA – Nelze získat objekt geometrie z dat, která odesíláte do pole GEOMETRY