手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

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

时间:2024-10-17 09:47:11

1、语法:WITHsubquery_nameAS(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用法
© 手抄报圈