Về mặt hiệu suất, chúng giống nhau (và tạo ra các kế hoạch giống nhau)
Về mặt logic, bạn nên thực hiện thao tác vẫn có ý nghĩa nếu bạn thay thế INNER JOIN
với LEFT JOIN
.
Trong trường hợp của bạn, nó sẽ giống như thế này:
SELECT *
FROM TableA a
LEFT JOIN
TableXRef x
ON x.TableAID = a.ID
AND a.ID = 1
LEFT JOIN
TableB b
ON x.TableBID = b.ID
hoặc cái này:
SELECT *
FROM TableA a
LEFT JOIN
TableXRef x
ON x.TableAID = a.ID
LEFT JOIN
TableB b
ON b.id = x.TableBID
WHERE a.id = 1
Truy vấn trước đây sẽ không trả về bất kỳ kết quả phù hợp thực tế nào cho a.id
khác với 1
, vì vậy cú pháp sau (với WHERE
) nhất quán hơn về mặt logic.