表连接有嵌套循环(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 后面的条件都是从下往上一次执行的。
嵌套循环连接和哈希连接有驱动顺序,驱动表的顺序不同将影响表连接的性能,而排序合并连接没有驱动的概念,无论哪张表在前面都无妨。
原文地址:http://www.cnblogs.com/zhugehome/p/3783527.html