Nếu bạn nghĩ rằng việc triển khai LEFT JOIN là INNER JOIN + nhiều công việc hơn, thì kết quả này thật khó hiểu. Điều gì sẽ xảy ra nếu việc triển khai INNER JOIN là (LEFT JOIN + filter)? À, giờ thì đã rõ.
Trong các kế hoạch truy vấn, điểm khác biệt duy nhất là: người dùng ... bổ sung:sử dụng ở đâu . Điều này có nghĩa là lọc. Có một bước lọc bổ sung trong truy vấn với liên kết bên trong.
Đây là một kiểu lọc khác với kiểu lọc thường được sử dụng trong mệnh đề where. Thật đơn giản để tạo một chỉ mục trên A để hỗ trợ hành động lọc này.
SELECT *
FROM A
WHERE A.ID = 3
Hãy xem xét truy vấn này:
SELECT *
FROM A
LEFT JOIN B
ON A.ID = B.ID
WHERE B.ID is not null
Truy vấn này tương đương với tham gia bên trong. Không có chỉ mục nào trên B sẽ giúp ích cho hành động lọc đó. Lý do là mệnh đề where đang nêu một điều kiện về kết quả của phép nối, thay vì điều kiện trên B.