Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Czy INNER JOIN może zapewnić lepszą wydajność niż EXISTS?

Ogólnie rzecz biorąc, INNER JOIN i EXISTS to różne rzeczy.

Pierwsza zwraca duplikaty i kolumny z obu tabel, druga zwraca jeden rekord i jako predykat zwraca rekordy tylko z jednej tabeli.

Jeśli wykonasz sprzężenie wewnętrzne na UNIQUE kolumny, wykazują taką samą wydajność.

Jeśli wykonasz sprzężenie wewnętrzne na zestawie rekordów z DISTINCT zastosowane (aby pozbyć się duplikatów), EXISTS jest zwykle szybszy.

IN i EXISTS klauzule (z korelacją equijoin) zwykle używają jednego z kilku SEMI JOIN algorytmy, które są zwykle bardziej wydajne niż DISTINCT na jednym ze stołów.

Zobacz ten artykuł na moim blogu:

  • IN vs. JOIN vs. EXISTS


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sprawdź, czy obiekt jest kluczem podstawowym za pomocą OBJECTPROPERTY() w SQL Server

  2. Co uczenie maszynowe oznacza dla specjalistów od baz danych

  3. Jak zmienić nazwę tabeli w SQL Server

  4. Najlepsze podejście do obliczania sum — aktualizacja dla SQL Server 2012

  5. Jak radzić sobie z błędami w zagnieżdżonych transakcjach SQL Server