其他分享
首页 > 其他分享> > 内联视图无法发生视图合并的几种情况

内联视图无法发生视图合并的几种情况

作者:互联网

在优化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