我有一个查询,需要在实际查询中多次使用。所以我把那个可重用的查询放在with子句中。
下面的查询只是一个示例。
我的疑问是,cte1with子句中使用的查询执行了多少次?
在下面的查询中,cte1使用了两次。因此cte1中使用的查询只执行一到两次。
with cte1 as
(
select ename, eno, deptno, sal from emp where sal >= 2000
)
select x.ename,x.eno,y.deptno, 'B' Grade
from cte1 x, dept y
on x.deptno = y.deptno
and e.sal between 2000 and 4000
union all
select x.ename,x.eno,y.deptno, 'C'
from cte1 x, dept y
on x.deptno = y.deptno
and e.sal > 4000
默认情况下,被多次引用的CTE将被物化。否则,CTE将表现为内联视图
CTE正在创建临时表,因此内部的SQL在执行一次
存在于单个语句范围内的临时结果集,并且可以在该语句中稍后引用,可能多次引用