内联视图无法发生视图合并的几种情况
作者:互联网
在优化SQL的时候,我们可能遇到各种奇奇怪怪的情况,当我们掌握一些原理性的内容后,我们对于SQL优化就会显得游刃有余。这就是我们需要掌握一些优化原理的意义,因为自己在优化方面也属于半路出家,写文章也是为了更好的学习,这篇文章会慢慢搜集一些相关资料,慢慢的进行扩展。
一:内联视图中使用伪列
1.正常情况下发生视图合并
select emp.ename, emp.deptno
from emp, (select deptno from dept where dname = 'SALES') v
where emp.deptno = v.deptno;
ENAME DEPTNO ---------- ---------- ALLEN 30 WARD 30 MARTIN 30 BLAKE 30 TURNER 30 JAMES 30
执行计划如下,通过以下执行计划可以判定,视图v发生了视图合并
2.当视图中含有rownum伪列时,无法发生视图合并
select emp.ename, emp.deptno
from emp, (select rownum rn,deptno from dept where dname = 'SALES') v
where emp.deptno = v.deptno;
ENAME DEPTNO ---------- ---------- ALLEN 30 WARD 30 MARTIN 30 BLAKE 30 TURNER 30 JAMES 30
##从这里的执行计划可以看到视图v并未发生视图合并
标签:30,视图,几种,emp,----------,内联,deptno,select 来源: https://www.cnblogs.com/hanglinux/p/16268768.html