Không, không nên có sự khác biệt. EXISTS
trả tiền ngay sau khi nó đã tìm thấy một hàng phù hợp. Đó là lý do tại sao nó luôn được ưu tiên hơn v.d. (select COUNT(*) from ...) > 0
- một COUNT
sẽ buộc tất cả các hàng phải được xem xét.
Nếu bạn tạo bốn truy vấn sau:
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)
Và bật kế hoạch thực thi, bạn sẽ thấy rằng truy vấn thứ hai tạo ra một kế hoạch thực thi bao gồm TOP
nhà điều hành. Các truy vấn thứ 3 và thứ 4 tạo ra giống hệt nhau các kế hoạch. TOP
bị bỏ qua.