网上有人给出了最佳的优化思路是:
1.先将大表中满足条件的记录抽出来生成一张临时表.
2.再将这较小的临时表与另一张较小的表进行关联查询.
先不论思路是否值得商榷,这把临时表当成中转站的做法还是很值得肯定
临时表本质上就是一种cache的表现形式,Oracle的临时表都是事先建好的
一旦用了临时表,存放的就是和本会话相关的数据
没有人会傻乎乎地用临时表来保存本应该共享的数据
with子查询实际上也是用了临时表,Oracle会替你创建一张临时表
因此临时表的开销WITH子查询也会有。只要把AUTOTRACE打开你就会看到REDO的开销
关于临时表的使用至少会带来两个问题:
1)主查询的执行计划问题
2)额外的写redo的问题
Oracle 临时表之临时表的应用问题
最新推荐文章于 2024-12-21 21:07:53 发布
本文讨论了Oracle临时表在复杂查询优化中的应用,包括其作为数据中转站的作用,以及与WITH子查询的开销对比。文章提到了临时表可能导致的执行计划问题和额外的redo写入,并提出了动态采样和使用动态SQL来优化执行计划的建议。临时表适用于循环SQL、多表关联、大数据量更新和复杂查询条件的中间结果。

最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



