Câu hỏi của tôi tương tự như câu hỏi này SQL order of operations nhưng với một chút thay đổi, vì vậy tôi cho rằng công bằng là nên hỏi.WHERE và JOIN thứ tự hoạt động
Tôi đang sử dụng Teradata. Và tôi có 2 bảng: table1
, table2
.
table1
chỉ có một cột id
.
table2
có các cột sau: id
, val
Tôi có thể sai nhưng tôi nghĩ rằng hai câu lệnh này cho kết quả tương tự.
Tuyên Bố 1.
SELECT table1.id, table2.val
FROM table1
INNER JOIN table2
ON table1.id = table2.id
WHERE table2.val<100
Tuyên Bố 2.
SELECT table1.id, table3.val
FROM table1
INNER JOIN (
SELECT *
FROM table2
WHERE val<100
) table3
ON table1.id=table3.id
Câu hỏi của tôi là, tôi ưu truy vấn sẽ đủ thông minh để
- thực thi mệnh đề WHERE đầu tiên sau đó THAM GIA sau này trong Bản Tuyên Bố 1
- biết rằng bảng 3 không thực sự cần thiết trong Bản khai 2
Tôi khá mới với SQL, vì vậy hãy giáo dục tôi nếu tôi hiểu nhầm bất cứ điều gì.
Tôi đã nghĩ rằng trình tối ưu hóa truy vấn sẽ đưa ra cùng một kế hoạch cho cả hai. Hãy thử chạy 'EXPLAIN' kế hoạch để xác minh mặc dù. –