CTE(Common table expression),TPC-DS 30%+ 的 sql 中包含 with as 用法, 通过 with as 子查询,在主查询中多次引用,每一次引用带来了额外的重复计算,导致资源浪费。基础的 CTE 优化,通过复用 with 子句的结果给多个引用方,来减少重复计算的代价。但是对于部分场景,与主查询的关系推导可以进一步减少 with 子查询中的计算量,这时直接 share 完整 with 子句会导致额外的性能回退。那么通过 inline 后的最优计划,进行 common sub tree 的识别,进一步减少重复计算量,达到无 bad case 的效果。执行器实现中,我们引入了死锁检测,通过分析 common sub tree 的多个 consumer 之间的依赖关系,解决死锁问题。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。