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