Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Czy kolejność Sql JOIN wpływa na wydajność?

Kolejność złączeń na serwerze SQL2008R2 bezsprzecznie wpływa na wydajność zapytań, szczególnie w zapytaniach, w których występuje duża liczba złączeń tabel z klauzulami where stosowanymi wobec wielu tabel.

Chociaż kolejność złączenia jest zmieniana podczas optymalizacji, optymalizator nie próbuje wszystkich możliwych zamówień złączenia. Zatrzymuje się, gdy znajdzie rozwiązanie, które uważa za wykonalne, ponieważ sam akt optymalizacji zużywa cenne zasoby.

Widzieliśmy, że zapytania, które działały jak psy (1 minuta + czas wykonania), sprowadzały się do wydajności poniżej sekundy po prostu przez zmianę kolejności wyrażeń sprzężenia. Należy jednak pamiętać, że są to zapytania z 12 do 20 łączeniami i klauzulami where w kilku tabelach.

Sztuczka polega na tym, aby ustawić zamówienie, aby pomóc optymalizatorowi zapytań dowiedzieć się, co ma sens. Możesz użyć Force Order, ale może to być zbyt sztywne. Postaraj się upewnić, że kolejność łączenia zaczyna się od tabel, w których najbardziej zredukuje dane poprzez klauzule where.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Porównanie ciągów SQL, większe niż i mniejsze niż operatory

  2. Konwertuj float na varchar w SQL Server bez notacji naukowej

  3. Alias ​​odniesienia (obliczany w SELECT) w klauzuli WHERE

  4. Ile razy dany znak pojawia się w ciągu znaków

  5. Typ danych SQL Server BIT — ostateczny przewodnik