Generellt sett, INNER JOIN
och EXISTS
är olika saker.
Den förra returnerar dubbletter och kolumner från båda tabellerna, den senare returnerar en post och, eftersom den är ett predikat, returnerar den poster från endast en tabell.
Om du gör en inre join på en UNIQUE
kolumnen visar de samma prestanda.
Om du gör en inre koppling på en postuppsättning med DISTINCT
tillämpas (för att bli av med dubbletterna), EXISTS
är vanligtvis snabbare.
IN
och EXISTS
satser (med en equijoin-korrelation) använder vanligtvis en av de flera SEMI JOIN
algoritmer som vanligtvis är mer effektiva än en DISTINCT
på ett av borden.
Se den här artikeln i min blogg:
- IN vs. JOIN vs. FINNS