Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jakiego indeksu powinienem użyć podczas używania JOIN na PRIMARY KEY

Istnieją tutaj dwie potencjalne strategie indeksowania, w zależności od tego, która z dwóch tabel pojawia się po lewej stronie sprzężenia wewnętrznego (każda tabela może potencjalnie pojawić się po obu stronach sprzężenia). Biorąc pod uwagę, że HotelRoom tabela prawdopodobnie zawiera znacznie więcej rekordów niż Hotel tabeli, sugerowałbym umieszczenie Hotel tabela po lewej stronie złączenia. Oznaczałoby to, że Hotel tabela zostanie przeskanowana, a indeks użyty do przyłączenia do HotelRoom . Następnie możemy spróbować użyć następującego indeksu w HotelRoom :

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

Powinno to znacznie przyspieszyć łączenie, obejmuje WHERE klauzuli, a także obejmuje wszystkie kolumny w select w HotelRoom . Zwróć uwagę, że następujący uproszczony indeks może być również bardzo skuteczny:

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

Obejmuje to tylko dołączenie i WHERE klauzula, ale MySQL może nadal z niej korzystać.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jedna tabela, dwie kolumny dla zapytania MYSQL

  2. Różnica dat między dwoma rekordami w tej samej tabeli

  3. BŁĄD 1067 (42000):Nieprawidłowa wartość domyślna dla „end_time”

  4. Kiedy nadszedł czas, aby stół zmienił się z MyISAM na InnoDb?

  5. MySQL Powolne dołączanie. Każdy sposób na przyspieszenie