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

EXISTS срещу JOIN и използване на клауза EXISTS

EXISTS се използва за връщане на булева стойност, JOIN връща цяла друга таблица

EXISTS се използва само за тестване дали подзаявка връща резултати и къси съединения веднага щом го направи. JOIN се използва за разширяване на набор от резултати чрез комбинирането му с допълнителни полета от друга таблица, към която има връзка.

Във вашия пример заявките са семантично еквивалентни.

Като цяло използвайте EXISTS когато:

  • Не е необходимо да връщате данни от свързаната таблица
  • Имате фалшификати в свързаната таблица (JOIN може да доведе до дублиране на редове, ако стойностите се повтарят)
  • Искате да проверите съществуването (използвайте вместо LEFT OUTER JOIN...NULL състояние)

Ако имате правилни индекси, през повечето време EXISTS ще се изпълнява идентично с JOIN . Изключението е при много сложни подзаявки, където обикновено е по-бързо да се използва EXISTS .

Ако вашият JOIN ключът не е индексиран, може да е по-бързо да използвате EXISTS но ще трябва да тествате за вашето конкретно обстоятелство.

JOIN синтаксисът е по-лесен за четене и по-ясен нормално.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Причини за надстройка до SQL Server 2017

  2. Вземете броя на неуспешните опити за влизане поради грешна парола в SQL Server (T-SQL)

  3. Създайте колона „Последна промяна“ в SQL Server

  4. Фатална грешка:Извикване на недефинирана функция sqlsrv_connect() в C:\xampp\htdocs

  5. Името на колоната или броят на предоставените стойности не съответстват на дефиницията на таблицата