Một trong hai trường hợp sẽ hoạt động tốt hơn (gần đây tôi bị cáo buộc không cẩn thận với mã của mình vì tôi đã sử dụng sau này trong Oracle):Tồn tại/không tồn tại: 'chọn 1' và 'trường chọn'
Select *
from Tab1
Where (not) exists(Select 1 From Tab2 Where Tab1.id = Tab2.id)
Select *
from Tab1
Where (not) exists(Select Field1 From Tab2 Where Tab1.id = Tab2.id)
Hoặc cả hai đều giống nhau?
Vui lòng trả lời cả từ phối cảnh SQL Server cũng như phối cảnh của Oracle.
Tôi đã googled (chủ yếu từ phía máy chủ sql) và thấy rằng vẫn còn nhiều tranh cãi về điều này mặc dù ý kiến / giả thiết hiện tại của tôi là người tối ưu hóa trong cả RDMBS đủ trưởng thành để hiểu rằng tất cả những gì được yêu cầu từ truy vấn phụ là một giá trị Boolean.
Không có sự khác biệt, cả hai đều giống nhau. Kiểm tra kế hoạch thực hiện cho cả hai truy vấn để xác minh. –
Hãy xem câu trả lời này ..http: //stackoverflow.com/a/6140367/2975396 – TheGameiswar