Có vẻ như người lập kế hoạch truy vấn đã đưa ra quyết định trong truy vấn nghĩa đen dựa trên thông tin mà nó đã có. Nó sẽ có số liệu thống kê mà nó có thể truy vấn một cách hiệu quả dựa trên sự phổ biến của dữ liệu được cung cấp theo nghĩa cụ thể của bạn.
Truy vấn được tham số hóa đã chọn truy vấn mà nó tin là công bằng nhất cho tất cả dữ liệu trong bảng của bạn, mà bạn sẽ nhận thấy là nhiều vòng lặp lồng nhau (performance =bad).
Có lẽ bạn có thể thử và chạy các công cụ tối ưu hóa cơ sở dữ liệu trên cơ sở dữ liệu của mình để xem liệu một số chỉ mục có thể giúp bạn ở đây không?
Cụ thể trong truy vấn của bạn, hãy thử điều này:
declare @p0 int
set @p0 = 1000
select *
from foo
join bar on bar.x = foo.x
join baz on baz.y = foo.y
where foo.x = @p0
OPTION ( OPTIMIZE FOR (@p0 = 1000))
Nhưng tôi sẽ cảnh giác khi làm điều này mà không chắc chắn rằng dữ liệu trong truy vấn này sẽ không thay đổi và truy vấn của bạn trong gói này LUÔN LUÔN hiệu quả hơn.