Generelt set INNER JOIN
og EXISTS
er forskellige ting.
Førstnævnte returnerer dubletter og kolonner fra begge tabeller, sidstnævnte returnerer én post og, som et prædikat, returnerer poster fra kun én tabel.
Hvis du laver en indre joinforbindelse på en UNIQUE
kolonne, udviser de samme ydeevne.
Hvis du laver en indre joinforbindelse på et recordset med DISTINCT
anvendt (for at slippe af med dubletterne), EXISTS
er normalt hurtigere.
IN
og EXISTS
klausuler (med en equijoin-korrelation) anvender normalt en af de flere SEMI JOIN
algoritmer, som normalt er mere effektive end en DISTINCT
på et af bordene.
Se denne artikel i min blog:
- IND vs. JOIN vs. EKSISTERER