Не, не трябва да има разлика. EXISTS
се спасява веднага щом намери един съвпадащ ред. Ето защо винаги се предпочита пред напр. (select COUNT(*) from ...) > 0
- COUNT
ще принуди всички редове да бъдат взети предвид.
Ако създадете следните четири заявки:
select * from sys.objects
select top 1 * from sys.objects
select 1 where exists(select * from sys.objects)
select 1 where exists(select top 1 * from sys.objects)
И включете плановете за изпълнение, ще видите, че втората заявка генерира план за изпълнение, който включва TOP
оператор. Третата и четвъртата заявка произвеждат идентичен планове. TOP
се игнорира.