频道栏目
首页 > 资讯 > Oracle > 正文

基于Oracle的SQL优化教程(三)

18-06-19        来源:[db:作者]  
收藏   我要投稿

表连接

当优化器解析含表连接的目标SQL时,它除了会根据目标SQL的SQL文本的写法来决定表连接的类型之外,还必须决定如下三件事情才能得到最终的执行计划。(1)表连接顺序(2)表连接方法(3)访问单表的方法

表连接类型

1、内连接只要where条件中没有写那些标准SQL中定义或者Oracle中自定义的表示外连接的关键字,则该SQL的连接类型就是内连接。标准SQL中内连接的写法是用JOIN ON或者JOIN USING。目标表1 join 目标表2 on (连接条件)目标表1 join 目标表2 using (连接列集合)对于使用JOIN USING的标准SQL而言,如果连接列同时又出现在查询列中,则该连接列前不能带上表名或者表名的别名

2、外连接左连接:目标表1 left outer join 目标表2 on (连接条件)或 目标表1 left outer join 目标表2 using (连接列集合)left outer join左边的目标表1作为表连接的驱动表,即表明位置处于left的表就是outer table,驱动表。此时连接结果除了包含目标表1和目标表2中所有满足该连接条件的记录外,还会包含驱动表(目标表1)中所有不满足该连接条件的记录,同时,驱动表中所有不满足该连接条件的纪录所对应的被驱动表(目标表2)中的查询列均会以NULL值来填充。右连接:目标表1 right outer join 目标表2 on (连接条件)或目标表1 right outer join 目标表2 using (连接列集合)rightouter join右边边的目标表1作为表连接的驱动表,即表明位置处于right的表就是outer table,驱动表。其他的属性和左连接基本相同。 全连接:目标表1 full outer join 目标表2 on (连接条件)或 目标表1 fullouter join 目标表2 using (连接列集合)

全连接可以理解为先做左连接,再做右连接。最后把结果做一个union操作 自定义关键字“(+)”:其含义是关键字出现在哪个表的连接列的后面,就表明那个表会以null值来填充那些不满足连接条件并位于该表的查询列,此时应该以关键字对面的表作为驱动表。

相关TAG标签
上一篇:MySQL与python交互使用讲解
下一篇:SQL Server 2017下学生课程数据库查找不符合预期的一个调试的方法
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站