Nói chung, không có vấn đề gì. Trình tối ưu hóa có thể tìm ra thứ tự hiệu quả nhất để tham gia các bảng bất kể thứ tự chúng xuất hiện trong truy vấn.
Có thể, tuy nhiên, thứ tự của các bảng sẽ ảnh hưởng đến gói truy vấn. Điều này thường sẽ không phải là trường hợp nếu bạn có một bảng hai tham gia đơn giản nhưng khi số lượng các bảng trong một truy vấn tăng lên, số lượng các phép nối có thể tăng lên với tốc độ O (n!). Khá nhanh chóng, nó trở thành không thể cho người tối ưu hóa để xem xét tất cả các đơn đặt hàng tham gia có thể vì vậy nó đã sử dụng heuristics khác nhau để tỉa cây. Điều đó, đến lượt nó, dẫn đến các tình huống mà trình tối ưu hóa chọn một bảng điều khiển khác nếu bảng đó được liệt kê đầu tiên trong câu lệnh SQL trái với khi bảng đó là bảng thứ mười trong truy vấn. Jonathan Lewis có một bài đăng trên blog đẹp hiển thị cách the order tables appear in a query can affect the query plan.Nếu bạn muốn cẩn thận hơn, hãy liệt kê bảng lái xe trước là điều hợp lý để làm-- nó sẽ không giúp đỡ thường xuyên nhưng đôi khi nó có thể làm tốt.
Nguồn
2012-06-14 21:33:09
+1. Tôi sẽ thêm (chỉ để nitpick) rằng hai báo cáo nên tạo ra cùng một kế hoạch thực hiện, * mọi thứ khác bằng nhau * (tức là phân tích cú pháp tại cùng một thời điểm, với cùng một số liệu thống kê bảng, vv). Có những trường hợp (ngoài phạm vi của câu hỏi này), trong đó hai truy vấn có thể xuất hiện để đưa ra các kế hoạch khác nhau. –