with as的写法, 有一个专有名词, 叫common table expression, 简称CTE,很多开发人员把使用这种写法当成一个提高SQL执行效率的方法, 事实究竟如何, 请往下看....在 oracle优化培训之第二期 的课程中, 我给学员讲了with as的几个用途,下面逐一介绍:
1. 通过materilize生成临时表, 达到优化SQL目的....比如一个大表(或一段查询块), 在SQL中被多次使用, 每次访问表, 都有一些共同的过滤条件, 过滤之后, 结果集变小, 这种情况就比较适合使用with as的写法....相关知识点:
如果with as 查询块被使用2次或两次以上, 会自动做materialize, 如果不想被物化, 可以使用/*+ inline */的hint ;
如果查询块只被调用一次...5.构造测试用例用临时数据
前面提高代码可读性的示例已经用到了, 下面示例是在19c之前, 使用listagg并去重的一种写法, with as的作用是生成了几行测试记录, 避免了建表和插入记录的麻烦