欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

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

表连接

当优化器解析含表连接的目标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值来填充那些不满足连接条件并位于该表的查询列,此时应该以关键字对面的表作为驱动表。