Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.0 (中文) » SQL Anywhere 服务器 - SQL 的用法 » 查询优化与执行 » 语义查询转换

 

将外连接转换为内连接

优化程序为其访问计划生成左深 (left-deep) 处理树。这一规则的唯一例外是存在右深 (right-deep) 嵌套外连接表达式的情况。查询执行引擎的用于计算 LEFT OUTER JOIN 或 RIGHT OUTER JOIN 的算法要求,保留的表必须在任何连接策略中先于提供空值的表。因此,只要可能,优化程序就会寻找机会将 LEFT 或 RIGHT 外连接转换为内连接,这是因为内连接是可交换的,它使优化程序在执行连接枚举时具有更大的自由度。

如果以下条件之一为真,则 LEFT 或 RIGHT 外连接会转换为内连接:

当查询引用使用外连接编写的一个或多个视图时,此重写优化可应用于外连接查询。该查询的 WHERE 子句可以包括限制输出的条件,以便从一个或多个表的表达式中排除所有提供空值的行,从而使这种优化适用。

 示例 1
 示例 2