このテーブル接続におけるフィルタ条件の実行について
666 ワード
select e.ename,e.salary,e.deptno
from employee e join
(select deptno,round(avg(salary)) avgsal
from employee
group by deptno) a
on e.deptno = a.deptno
and e.salary > a.avgsal
select句のクエリー結果セットは次のとおりです.
1 30 4500
2 20 11667
3 10 8000
ではe.salary>a.avgsalはどのように実行されているのでしょうか.
私は今日何人かに2つの言い方を聞いた.
1、テーブル接続の前に、e.salary>a.avgsalという条件を満たすものはすべて検索されます.つまり、従業員の給料は5000元ですが、3回比べて、条件を満たしていることを発見してフィルタリングされる可能性があります.
2、表が接続される前に、各部門の記録はe.deptno=a.deptno条件に基づいて自分の部門の給与平均値を探して比較し、条件に合致する記録をフィルタリングする.
この2つの実行プロセスoracleがどちらを実行するか知りたいです.