No, no debería haber diferencia. EXISTS
se rescata tan pronto como ha encontrado una sola fila coincidente. Es por eso que siempre se prefiere a, p. (select COUNT(*) from ...) > 0
- un COUNT
obligaría a considerar todas las filas.
Si crea las siguientes cuatro consultas:
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)
Y active los planes de ejecución, verá que la segunda consulta genera un plan de ejecución que incluye un TOP
operador. Las consultas 3 y 4 producen idénticas planes El TOP
se ignora.