Nói rằng tôi có một truy vấn như hình dưới đây:Thứ tự JOIN có tạo sự khác biệt không?
SELECT t1.id, t1.Name
FROM Table1 as t1 --800,000 records
INNER JOIN Table2 as t2 --500,000 records
ON t1.fkID = t2.id
INNER JOIN Table3 as t3 -- 1,000 records
ON t1.OtherId = t3.id
tôi sẽ thấy một sự cải thiện hiệu suất nếu tôi đã thay đổi thứ tự của gia nhập của tôi trên Table2 và Table3. Xem bên dưới:
SELECT t1.id, t1.Name
FROM Table1 as t1 --800,000 records
INNER JOIN Table3 as t3 -- 1,000 records
ON t1.OtherId = t3.id
INNER JOIN Table2 as t2 --500,000 records
ON t1.fkID = t2.id
Tôi nghe nói rằng Trình tối ưu hóa truy vấn sẽ cố gắng xác định thứ tự tốt nhất nhưng không phải lúc nào cũng hoạt động. Phiên bản SQL Server bạn đang sử dụng có tạo sự khác biệt không?
Làm cách nào để kiểm tra? Có quy tắc hay về mức độ thường xuyên tôi nên cập nhật số liệu thống kê của mình không? –
Không phải là các hàng Ước tính và thực tế được bao gồm trong kế hoạch Thực thi Thực tế? Vì vậy, nếu nó ước tính 1 hàng và nó trở về hàng ngàn thì tôi có lẽ cần phải cập nhật số liệu thống kê của tôi? Liệu nó có tạo sự khác biệt nếu tôi đang tham gia vào một bảng tạm thời không? –
Ngoài ra, thống kê có tạo sự khác biệt nếu tham gia trên một chế độ xem không? –