Nej, der burde ikke være nogen forskel. EXISTS
redder, så snart den har fundet en enkelt matchende række. Derfor foretrækkes det altid frem for f.eks. (select COUNT(*) from ...) > 0
- en COUNT
ville tvinge alle rækker til at blive taget i betragtning.
Hvis du opretter følgende fire forespørgsler:
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)
Og slå eksekveringsplaner til, vil du se, at den anden forespørgsel genererer en eksekveringsplan, der indeholder en TOP
operatør. Den 3. og 4. forespørgsel producerer identiske planer. TOP
ignoreres.