Dường như với tôi rằng bạn có thể thực hiện điều tương tự trong truy vấn SQL bằng cách sử dụng KHÔNG EXISTS, NOT IN hoặc LEFT THAM GIA Ở ĐÂU LÀ NULL. Ví dụ:
SELECT a FROM table1 WHERE a NOT IN (SELECT a FROM table2)
SELECT a FROM table1 WHERE NOT EXISTS (SELECT * FROM table2 WHERE table1.a = table2.a)
SELECT a FROM table1 LEFT JOIN table2 ON table1.a = table2.a WHERE table1.a IS NULL
Tôi không chắc là mình có đúng cú pháp hay không, nhưng đây là những kỹ thuật chung mà tôi đã thấy. Tại sao tôi chọn sử dụng cái này hơn cái kia? Hiệu suất có khác nhau không ...? Cái nào trong số này là nhanh nhất / hiệu quả nhất? (Nếu nó phụ thuộc vào việc thực hiện, khi nào tôi sẽ sử dụng từng cái?)
EXISTS
mệnh đề. Bạn có thể quay lại *
, NULL
hoặc bất cứ điều gì: tất cả điều này sẽ được tối ưu hóa đi.
SELECT
và FROM
. Và *
chỉ dễ dàng hơn để gõ. Đúng, SQL
có một số điểm tương đồng với ngôn ngữ tự nhiên, nhưng nó được phân tích cú pháp và thực thi bởi một máy, một máy được lập trình. Không phải là nó sẽ đột nhiên đột nhập vào tủ của bạn và hét lên "hãy ngừng yêu cầu thêm các trường trong một EXISTS
truy vấn vì tôi không muốn phân tích chúng và sau đó ném chúng đi!". Thật sự ổn với máy tính.