この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
whereorjoin句を追加しないと、select * from T2テーブル全体がスキャンされると思います。そうじゃない?