sql >> Databasteknik >  >> RDS >> Sqlserver

Kan en INNER JOIN erbjuda bättre prestanda än FINNS

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


  1. Inom en triggerfunktion, hur man får fram vilka fält som uppdateras

  2. MySQL:NULL vs

  3. 3 sätt att returnera antalet rader i varje partition i SQL Server (T-SQL)

  4. 15 Användbara MySQL/MariaDB-prestandajusteringar och optimeringstips