このselectステートメントでこのSQLフィドルを見てください:
select T1.VAL, ttemp.*
from T1,
(select rownum, t.* from (select * from T2 where t2.val = t1.val ) t) ttemp
where t1.val = ttemp.val
and t1.val > 2
ここで、最も外側のテーブルを内側のレベル 2 テーブルに結合し、結果を次のように置き換えt2.val > 2
ますt2.val = t1.val
。
ORA-00904: "T1"."VAL": invalid identifier
where
orjoin
句を追加しないと、select * from T2
テーブル全体がスキャンされると思います。そうじゃない?