Não, não deve haver diferença.
EXISTS
sai assim que encontra uma única linha correspondente. É por isso que é sempre preferível, por exemplo, (select COUNT(*) from ...) > 0
- um COUNT
forçaria todas as linhas a serem consideradas. Se você criar as quatro consultas a seguir:
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)
E ative os planos de execução, você verá que a segunda consulta gera um plano de execução que inclui um
TOP
operador. As 3ª e 4ª consultas produzem idênticos planos. O TOP
é ignorado.