Over het algemeen geldt INNER JOIN
en EXISTS
zijn verschillende dingen.
De eerste retourneert duplicaten en kolommen uit beide tabellen, de laatste retourneert één record en, aangezien het een predikaat is, records uit slechts één tabel.
Als je een inner join doet op een UNIQUE
kolom, vertonen ze dezelfde prestaties.
Als je een inner join doet op een recordset met DISTINCT
toegepast (om de duplicaten te verwijderen), EXISTS
is meestal sneller.
IN
en EXISTS
clausules (met een equijoin-correlatie) gebruiken meestal een van de verschillende SEMI JOIN
algoritmen die doorgaans efficiënter zijn dan een DISTINCT
op een van de tafels.
Zie dit artikel in mijn blog:
- IN vs. JOIN vs. EXISTS