私の質問は、このSQL の操作順序に似ていますが、少しひねりがあるので、質問するのは公平だと思います。
テラデータを使用しています。そして、私は2つのテーブルを持っています: table1
, table2
.
table1
id
には列しかありません。
table2
次の列があります: id
、val
私は間違っているかもしれませんが、これら 2 つのステートメントは同じ結果をもたらすと思います。
ステートメント 1。
SELECT table1.id, table2.val
FROM table1
INNER JOIN table2
ON table1.id = table2.id
WHERE table2.val<100
ステートメント 2。
SELECT table1.id, table3.val
FROM table1
INNER JOIN (
SELECT *
FROM table2
WHERE val<100
) table3
ON table1.id=table3.id
私の質問は、クエリ オプティマイザーは、最初に WHERE 句を実行し、その後ステートメント 1 で JOIN を実行するのに十分スマートで
あるかということです。テーブル 3 はステートメント 2 では実際には必要ないことを知っています。
私はSQLにかなり慣れていないので、誤解があれば教えてください。