with子句查询运行了多少次



我有一个查询,需要在实际查询中多次使用。所以我把那个可重用的查询放在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在执行一次

存在于单个语句范围内的临时结果集,并且可以在该语句中稍后引用,可能多次引用

最新更新