Vì vậy, tôi biết đó là một phương pháp lập trình tốt để thêm các điều kiện lọc trong mệnh đề WHERE của truy vấn để giảm thiểu số lượng hàng được trả về trong các kết nối. quyết định xem chúng ta có nên thêm bộ lọc vào WHERE thay vì FROM không? Ví dụ:Thêm bộ lọc vào WHERE so với FROM
SELECT a.ColA, a.ColB, a.ColC, b.ColD, b.ColE
FROM TblA a INNER JOIN TblB b
On a.ColA = b.ColD
AND a.ColA = 'X'
AND a.ColB = 'Y'
WHERE b.ColD = 'ABC'
Trong truy vấn này, nếu tôi thêm b.ColD vào mệnh đề AND thay vì WHERE thì sao? Điều đó sẽ không làm cho truy vấn hiệu quả hơn? Tôi biết kết quả có thể khác nhau trong cả hai cách tiếp cận nhưng tôi không biết tại sao?
Cảm ơn.
Đánh giá bằng thẻ tsql, bạn đang sử dụng SQL Server. Studio quản lý có khả năng hiển thị kế hoạch thực hiện truy vấn, vì vậy bạn có thể so sánh sự khác biệt của cả hai phiên bản. Tuy nhiên, _guess_ của tôi là sẽ không có nhiều khác biệt. –
Đây không phải là bản sao: OP đang hỏi về bộ lọc chứ không phải là JOIN – gbn
@gbn Tôi không chắc liệu từ ngữ của OP ("bộ lọc" so với "điều kiện", v.v.) có quan trọng đến mức không, vì ví dụ do OP đưa ra về cơ bản giống như [ở đây] (http://stackoverflow.com/q/1907335/880904), [tại đây] (http://stackoverflow.com/q/1018952/880904), [tại đây] (http://stackoverflow.com/q/1401889/880904), [tại đây] (http://stackoverflow.com/q/15483808/880904) và hơn thế nữa. Tất cả những người có 'JOIN ... ON', hỏi về 'WHERE', và bao gồm các câu trả lời tương tự cho bạn. Dường như với tôi rằng câu hỏi này đã được trả lời, hoặc chúng ta cũng nên mở lại [câu hỏi này] (http://stackoverflow.com/q/13145275/880904)? –