加--+materialize提示,Oracle会先将查询结果写入一张临时表,然再查询临时表。
WITH AS: 就是将一个子查询部分独立出来,有时候是为了提高SQL语句的可读性,有时候是为了提高SQL语句性能。
如果一个SQL语句中,某个表会被访问多次,而且每次访问的限制条件一样的话,就可以使用with as来提高性能。
注意:如果 with as 短语没有被调用2次以上,CBO就不会将 with as短语获取的数据放入temp表,如果想要将数据放入temp表需要使用materialize hint
如果 with as 短语被调用了2次以上,CBO会自动将 with as 短语的数据放入一个临时表,这个时候不用写materialize hint
举个例子(本例基于Scott用户)
SQL> explain plan for with a as (select /*+ materialize */ ename,job,deptno from emp where sal>(select avg(sal) from emp)) select * from a ;
Explained.
SQL> select * from table(dbms_xplan.display);
去掉 /*+ materialize */ ,由于只访问了一次a,所以CBO不会将a的查询结果生成一个临时表
SQL> explain plan for with a as (select ename,job,deptno from emp where sal>(select avg(sal) from emp)) select * from a ;
Explained.
SQL> select * from table(dbms_xplan.display);
如上:WITH AS 语句调用一次 使用多次需要写hints。
继续测试:
SQL> explain plan for with a as (select ename,job,deptno from emp where sal>(select avg(sal) from emp)) select * from a union all select * from a;
Explained.
SQL> select * from table(dbms_xplan.display);
充分证明 :
1.当with as 语句没有被调用2次以上时,如果需要访问多次,那么需要加hints /*+ materialize */
2.如果with as 语句被调用2次以上时,自动会将 with as 短语的数据放入一个临时表,这个时候不用写materialize hint.
WITH AS and materialize hints
来源:这里教程网
时间:2026-03-03 12:13:13
作者:
编辑推荐:
- word中设置横向的两种方法03-03
- oracle rac数据库的安装03-03
- word中目录怎么制作的两种方法03-03
- WITH AS and materialize hints03-03
- 走索引删除0条记录却要142秒的优化案例03-03
- word中如何删除多余空白页03-03
- word中平方怎么打03-03
- ORACLE analyse table方式收集表统计信息导致SQL执行计划不准确而性能下降03-03
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- WITH AS and materialize hints
WITH AS and materialize hints
26-03-03 - ORACLE analyse table方式收集表统计信息导致SQL执行计划不准确而性能下降
- HanLP用户自定义词典源码分析
HanLP用户自定义词典源码分析
26-03-03 - orecle分析函数
orecle分析函数
26-03-03 - Windows下用命令行工具ADRCI跟踪日志文件
Windows下用命令行工具ADRCI跟踪日志文件
26-03-03 - word空白页无法删除这么办
word空白页无法删除这么办
26-03-03 - 跨平台级联dataguard配置
跨平台级联dataguard配置
26-03-03 - informatic
informatic
26-03-03 - ORACLE 递归算法
ORACLE 递归算法
26-03-03 - ORACLE JOB
ORACLE JOB
26-03-03
