Tôi có một truy vấn con tương quan như thế này (từ BOL ):
SELECT DISTINCT c.LastName, c.FirstName, e.BusinessEntityID
FROM Person.Person AS c JOIN HumanResources.Employee AS e
ON e.BusinessEntityID = c.BusinessEntityID
WHERE 5000.00 IN
(SELECT Bonus
FROM Sales.SalesPerson sp
WHERE e.BusinessEntityID = sp.BusinessEntityID) ;
GO
Khi tôi viết lại truy vấn này bằng cách sử dụng tham gia
select c.LastName, c.FirstName, e.BusinessEntityID, d.Bonus
from Person.Person as c
inner join HumanResources.Employee as e on e.BusinessEntityID = c.BusinessEntityID
inner join Sales.SalesPerson as d on d.BusinessEntityID = c.BusinessEntityID
where Bonus = 5000.00
Và nhìn vào kế hoạch thực hiện thực tế, nó trông giống hệt nhau trong cả hai truy vấn. Tại sao? Tôi đã nghĩ rằng truy vấn con tương quan chậm hơn nhiều do vòng lặp lồng nhau và kế hoạch thực hiện có khác nhau không? Có phải vì không có nhiều dữ liệu trong các bảng này?
[sql-server]
, không [mysql]
.