导语

Join Reordering 是数据库优化领域中备受关注的问题。Join Reordering 的问题可以描述为给定一条多表 Join 的 SQL,输出一个 Join Order,使得查询性能最优。TDSQL for PG 优化器使用动态规划自下而上的枚举所有可能的 Join Order,对于存在 left join、full join、semi join 和 anti join 的场景,TDSQL for PG 如何保证生成的 Join Order 是正确的?

1、什么是Join Reordering?

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

2、常见的Join Reordering方式

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

3、Bottom-up Join Reordering 如何保证正确性和完备性

1)TDSQL for PG Outer Join 合法性检查

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

2)Reorderability

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

3)Core Search Space

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

4)DPsube

请在此添加图片描述

请在此添加图片描述

5)CD-A

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

6)CD-B

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

7)CD-C

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

8)Rule Simplification

请在此添加图片描述

9)Cross Products and Degenerate Predicates

请在此添加图片描述

4、TDSQL for PG Join Reordering

实现分析

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

文章来源于腾讯云开发者社区,点击查看原文