8.2.1.12 Outer Join Simplification 外联接简化
来源:互联网 发布:php注销登录 编辑:程序博客网 时间:2024/05/20 18:19
8.2.1.12 Outer Join Simplification 外联接简化
表表达式 在FROM语句里:
在解析阶段, 用右连接操作会被转换为相同的差选只包含左连接,在通常情况下,
根据下面的规则转换:
(T1, …) RIGHT JOIN (T2,…) ON P(T1,…,T2,…) =
(T2, …) LEFT JOIN (T1,…) ON P(T1,…,T2,…)
由连接会被转换为相等的左连接:
所有的inner join 表达式 格式为 T1 INNER JOIN T2 ON P(T1,T2) 会被列表T1,T2 p(t1,t2) 代替:
当优化器评估执行计划用于join 查询(使用外连接操作), 它只考虑一种执行计划,
对于每个操作,外部表在内部表之前访问。 这个操作优化是有限的,
因为只有这样的执行计划能让我们执行查询用外连接操作通过嵌套循环
假设我们有一个查询:
SELECT * T1 LEFT JOIN T2 ON P1(T1,T2)
WHERE P(T1,T2) AND R(T2)
R(T2) 大大的缩小了表T2 匹配的行数,如果我们执行查询时,优化器没有其他选择,
除了在T2前访问表T1,会导致一个非常差的执行计划。
幸运的是,MySQL 将这样的查询转换为一个查询没有外连接操作,如果WHERE 条件是拒绝NULL值的。
一个条件被叫做 null-rejected 对于一个外连接操作。
0 0
- 8.2.1.12 Outer Join Simplification 外联接简化
- SQL 联接--->左向外联接 (左外联接 ..left outer join..on)
- SQL 联接--->右向外联接 (右外联接 ..right outer join..on)
- SQL 联接--->完整外联接 (完整外部联接 ..full outer join..on)
- 探讨使用外联接(OUTER JOIN)联接两表时容易忽略的一个小问题
- 内联接外联接全联接join的用法
- left outer join right outer join
- oracle 数据库外联 join (+)
- hibernate outer-join join fetch
- inner join 和outer join
- Mysql Inner Join , Outer Join
- Linq INNER JOIN / OUTER JOIN
- inner join 和 outer join
- NHibernate Outer join fetch
- 外连接(outer join)
- left outer join partition
- LEFT OUTER JOIN
- Oracle full outer join
- RAC+DG搭建过程
- 08-图9 关键活动 (30分)
- js toArray的更好实现方法
- 进程与线程
- 架构师必看书籍
- 8.2.1.12 Outer Join Simplification 外联接简化
- 【POJ2492】【加权并查集模板题】
- CocoaAsyncSocket 文档1:Socket简介
- jQuery 间歇式无缝滚动特效分享(三张图片平行滚动)
- Java中的日历类Calendar的常用方法(所有方法都在客户端测试过)
- 反转字符串I am a student
- WMS介绍
- 《HTTP权威指南》阅读笔记(五)
- XML Editor