【oracle开发】oracle中的with table as用法
1、语法:
WITH
subquery_name
AS
(the aggregation SQL statement)
SELECT
(query naming subquery_name);

2、创建测试表tbl1、tbl2,往tbl1里插入2条数据,往tbl2里插入1000000条数据


3、此时我们单看一下全表扫描tbl2时的情况。通过下图,我们看到单对tbl2全表扫描时的逻辑读为6911

4、下面我们构造一个相关子查询,看看这个查询的执行计划。通过下图我们看到tbl2表被访问了2次,同时逻辑读也达到了2w+

5、下面我们用with table as 的语法重新构造该查询。通过下图可以看到tbl2只被读取了一次,但是比较之前的SQL多了600+的db block gets和physical reads,这两部分的逻辑读和物理读是构造临时表时产生的,而后面对临时表访问了两次,逻辑读是9000+,较之前的SQL 2w+多的逻辑读,还是稍好一些。

1、insert 也可以结合with table as语句

2、多个with table as的写法

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:181
阅读量:183
阅读量:168
阅读量:144
阅读量:52