首页 > 代码库 > 表连接

表连接

表连接有嵌套循环(nested loop join) 哈希连接(hash join)  排序合并(merge sort join)

这三种表连接的应用比例为70%,20%,10%

各类连接访问次数差异

alter session  set statistics_level=all 这种跟踪方式 显著特点,可以知道表访问的次数

聚合因子决定了回表查询的效率

嵌套循环表的访问次数

select /*+leading(t1)use_nt(t2)*/*

from t1,t2

where t1.id=t2.t1_id;

t1表访问了1次,t2表访问了100次

select ...

from t1,t2

where t1.id=t2.id

and t1.id in(19,20)

t1表访问了一次,t2表访问了2次

 

select ...

from t1,t2

where t1.id=t2.id

and t1.id=19

t1表访问了一次,t2表访问了一次

 

select ...

from t1,t2

where t1.id=t2.id

and t1.id=100000000

t1表访问了1次,t2表访问了0次

 

说明了,驱动返回多少条记录,被驱动表就会访问几次。where 后面的条件都是从下往上一次执行的。

 

嵌套循环连接和哈希连接有驱动顺序,驱动表的顺序不同将影响表连接的性能,而排序合并连接没有驱动的概念,无论哪张表在前面都无妨。