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