sql >> Databáze >  >> RDS >> Sqlserver

Může INNER JOIN nabídnout lepší výkon než EXISTS

Obecně řečeno, INNER JOIN a EXISTS jsou různé věci.

První vrací duplikáty a sloupce z obou tabulek, druhá vrací jeden záznam a jako predikát vrací záznamy pouze z jedné tabulky.

Pokud provedete vnitřní spojení na UNIQUE vykazují stejný výkon.

Pokud provedete vnitřní spojení u sady záznamů pomocí DISTINCT použito (pro odstranění duplikátů), EXISTS je obvykle rychlejší.

IN a EXISTS klauzule (s ekvijoinovou korelací) obvykle používají jednu z několika SEMI JOIN algoritmy, které jsou obvykle efektivnější než DISTINCT na jednom ze stolů.

Viz tento článek na mém blogu:

  • IN vs. JOIN vs. EXISTS


  1. Jak omezím počet řádků vrácených dotazem Oracle po objednání?

  2. ER diagramy v IRI Workbench

  3. Použití relačních databází MySQL na Arch Linuxu

  4. Úplné ignorování časových pásem v Rails a PostgreSQL