Nói chung, INNER JOIN
và EXISTS
là những thứ khác nhau.
Cái trước trả về các bản sao và cột từ cả hai bảng, cái sau trả về một bản ghi và là một vị từ, trả về các bản ghi chỉ từ một bảng.
Nếu bạn tham gia nội bộ trên UNIQUE
, chúng thể hiện cùng một hiệu suất.
Nếu bạn thực hiện một phép nối bên trong trên một tập bản ghi với DISTINCT
đã áp dụng (để loại bỏ các bản sao), EXISTS
thường nhanh hơn.
IN
và EXISTS
các mệnh đề (với mối tương quan tương đương) thường sử dụng một trong một số SEMI JOIN
các thuật toán thường hiệu quả hơn một DISTINCT
trên một trong các bảng.
Xem bài viết này trong blog của tôi:
- TRONG so với THAM GIA so với TỒN TẠI