sql >> Database >  >> RDS >> Sqlserver

LEFT JOIN Aanzienlijk sneller dan INNER JOIN

De Left join lijkt sneller te zijn omdat SQL wordt gedwongen eerst de kleinere select uit te voeren en vervolgens samen te voegen met deze kleinere set records. Om de een of andere reden wil de optimizer dit niet van nature doen.

3 manieren om de samenvoegingen in de juiste volgorde te forceren:

  1. Selecteer de eerste subset van gegevens in een tijdelijke tabel (of tabelvariabele) en voeg er vervolgens aan toe
  2. Gebruik left joins (en onthoud dat dit andere gegevens kan opleveren omdat het een left join is en geen inner join)
  3. gebruik het trefwoord FORCE ORDER. Houd er rekening mee dat als tabelgroottes of schema's veranderen, het queryplan mogelijk niet correct is (zie https://dba.stackexchange.com/questions/45388/forcing-join-order )


  1. Wat is het verschil tussen -Xss en -XX:ThreadStackSize?

  2. MySQL - UPDATE-query met SET-instructie afhankelijk van de uitkomst van de vorige SET-instructie

  3. Wanneer hebben kolom- of tabelnamen van Postgres aanhalingstekens nodig en wanneer niet?

  4. Waar slaat een servertrigger op in SQL Server?