Tôi vừa mới biết về sự tồn tại của mệnh đề "EXCEPT" mới trong SQL Server (một chút trễ, tôi biết ...) thông qua mã đọc được viết bởi một đồng nghiệp. Nó thực sự làm tôi ngạc nhiên!Khi nào sử dụng EXCEPT như trái ngược với KHÔNG tồn tại trong SQL giao dịch?
Nhưng sau đó tôi có một số câu hỏi liên quan đến việc sử dụng của nó: khi nào được khuyến nghị sử dụng? Có một sự khác biệt, hiệu suất khôn ngoan, giữa việc sử dụng nó so với một truy vấn tương quan sử dụng "AND NOT EXISTS ..."?
Sau khi đọc bài viết của EXCEPT trong BOL tôi nghĩ nó chỉ là một cách viết tắt cho tùy chọn thứ hai, nhưng tôi đã rất ngạc nhiên khi tôi viết lại một vài truy vấn bằng cách sử dụng nó (để họ có cú pháp "AND NOT EXISTS" quen thuộc hơn với tôi) và sau đó kiểm tra kế hoạch thực hiện - bất ngờ! Phiên bản EXCEPT có kế hoạch thực thi ngắn hơn và cũng được thực hiện nhanh hơn. Điều này luôn luôn như vậy?
Vì vậy, tôi muốn biết: các nguyên tắc sử dụng công cụ mạnh mẽ này là gì?
Tốt tham khảo: http://explainextended.com/2009/09/15/not-in-vs-not-exists-vs -left-join-is-null-sql-server/ –
@rexem: Tham chiếu của bạn không bao giờ đề cập đến mệnh đề EXCEPT ... –
Không, nhưng nó không nói về NOT EXISTS hiệu suất. Trang web cũng là một tài liệu tham khảo tuyệt vời cho các câu hỏi liên quan về hiệu suất của db. –