Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Може ли INNER JOIN да предложи по-добра производителност от EXISTS

Най-общо казано, INNER JOIN и EXISTS са различни неща.

Първият връща дубликати и колони от двете таблици, вторият връща един запис и, като предикат, връща записи само от една таблица.

Ако направите вътрешно присъединяване на UNIQUE колона, те показват еднакво представяне.

Ако направите вътрешно присъединяване към набор от записи с DISTINCT приложен (за да се отървете от дубликатите), EXISTS обикновено е по-бързо.

IN и EXISTS клаузите (с равносвързана корелация) обикновено използват една от няколкото SEMI JOIN алгоритми, които обикновено са по-ефективни от DISTINCT на една от масите.

Вижте тази статия в моя блог:

  • IN срещу JOIN срещу 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. IDENT_CURRENT срещу @@IDENTITY срещу SCOPE_IDENTITY в SQL Server:Каква е разликата?

  2. С ПРОВЕРКА НА ДОБАВЯНЕ НА ОГРАНИЧЕНИЕ, последвано от ПРОВЕРКА НА ОГРАНИЧЕНИЕ спрямо ДОБАВЯНЕ НА ОГРАНИЧЕНИЕ

  3. Динамично изпълнение на SQL в SQL Server

  4. Внедряване на пълнотекстово търсене в SQL Server 2016 за начинаещи

  5. Как мога да вмъкна данни от двоичен файл в двоично SQL поле с помощта на прост оператор за вмъкване?