Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Kann ein INNER JOIN eine bessere Leistung bieten als EXISTS

Im Allgemeinen INNER JOIN und EXISTS sind verschiedene Dinge.

Ersteres gibt Duplikate und Spalten aus beiden Tabellen zurück, letzteres gibt einen Datensatz zurück und gibt als Prädikat Datensätze aus nur einer Tabelle zurück.

Wenn Sie einen Inner Join auf einem UNIQUE durchführen Spalte zeigen sie die gleiche Leistung.

Wenn Sie einen inneren Join für ein Recordset mit DISTINCT durchführen angewendet (um die Duplikate loszuwerden), EXISTS ist normalerweise schneller.

IN und EXISTS Klauseln (mit einer Equijoin-Korrelation) verwenden normalerweise einen der mehreren SEMI JOIN Algorithmen, die normalerweise effizienter sind als ein DISTINCT auf einem der Tische.

Siehe diesen Artikel in meinem Blog:

  • IN vs. JOIN vs. EXISTS