【oracle开发】oracle中的with table as用法

 时间:2026-02-15 16:33:09

1、语法:

WITH 

 subquery_name

AS

(the aggregation SQL statement)

SELECT

(query naming subquery_name);

【oracle开发】oracle中的with table as用法

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

【oracle开发】oracle中的with table as用法

【oracle开发】oracle中的with table as用法

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

【oracle开发】oracle中的with table as用法

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

【oracle开发】oracle中的with table as用法

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

【oracle开发】oracle中的with table as用法

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

【oracle开发】oracle中的with table as用法

2、多个with table as的写法

【oracle开发】oracle中的with table as用法

  • iphone卡死不能强制重启
  • 如何解决python2和Python3共存的问题
  • notepad++如何设置文字右对齐
  • IE11浏览器怎么设置启用标签页分组功能?
  • Ultra Edit的列模式
  • 热门搜索
    端午节的手抄报 清明手抄报内容 缅怀先烈手抄报内容 春分手抄报 数学手抄报图片 节约手抄报 节约用水手抄报文字 防溺水手抄报简单好画 清明节手抄报图片 一年级手抄报简单又好