在 oracle优化培训之第二期 的课程中, 我给学员讲了with as的几个用途,下面逐一介绍:
1. 通过materilize生成临时表, 达到优化SQL目的....我的另一篇公众号文章 记一个Enq: ss - contention性能问题处理 , 就是这样一个案例, 不过这个案例的最佳解决方案是进一步改写, 表只需要被访问一次...., 默认不会做materialize, 可以用/*+ materialize*/的hint来使其物化生成临时表....在12.2及以上版本中, materialize 有个新特性, 叫CURSOR DURATION MEMORY, 可以把结果集保存在内存中, 而不是写到temp表空间, 可以提升效率.
2.提高代码可读性...; 利用 materialize 特性优化SQL, 也是开发人员需要考虑的.