Nej, det ska inte vara någon skillnad. EXISTS
löser ut så snart den har hittat en enda matchande rad. Därför är det alltid att föredra framför t.ex. (select COUNT(*) from ...) > 0
- en COUNT
skulle tvinga alla rader att beaktas.
Om du skapar följande fyra frågor:
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)
Om du aktiverar exekveringsplaner ser du att den andra frågan genererar en exekveringsplan som innehåller en TOP
operatör. Den 3:e och 4:e frågan producerar identiska planer. TOP
ignoreras.