为何nested loop要求小表驱动,hash join又为何要求小表hashed?
来源:互联网 发布:团队协作软件 开源 编辑:程序博客网 时间:2024/06/11 19:48
一般nested loop适合于返回行数<10000的,较小行数返回的表的连接。
nested loop的过程:选择row resource 最小的那个表作为驱动表(外部表),内部表要求有选择性高的index。 从外部表(驱动表)里一次取一行对内部表的每行进行比较,即外部表有几个distinct行,就有几次nested loop。
所以nested loop的代价是:
cost = outer access cost + (inner access cost * outer cardinality)
outer access cost应该是读取驱动表到内存,而内部表要求有有效的index也是为了降低inner access cost,而驱动表要求小,也就很好理解了。
Hash join 在缺少index的情况下比nested loop更有效,一般情况下比nested loop更快,因为处理内存中的hash表比b-tree index更迅速。有无index,对hash join并没有什么影响。
一般也是选择较小的表(内部表)读入内存,进行hash 算法,根据连接键构建成hash table。该表如果太大的话,会根据当前系统的参数设置,将该表分piece读入内存构建成hash表。然后外部表中的每行也被读入内存进行hash算法,得到一个hash值,对该piece进行比较。
所以hash join的cost 如下:
cost = (outer access cost * number of hash partitions) + inner access cost
上述两个cost里面都是先计算出读入内存的小表的access cost,只不过小表对于nested loop来说是outer table,而对于hash join而言是inner table
可见,如果一个hash内存设置的大的话,如果只有一个piece,那么cost=内部表与外部表的access cost相加之和,相当的。当然也要算上hash的代价,所以hash应该比nest loop快,但是选择nested loop还是hash join,一切交给optimizer就可以了。
- 为何nested loop要求小表驱动,hash join又为何要求小表hashed?
- 为何nested loop要求小表驱动,hash join又为何要求小表hashed?(转)
- oracle的表连接hash join、nested loop join
- oracle hash join和nested loop下的驱动表相关测试
- 表连接 nested loop hash join sort merge
- 多表连接的三种方式详解 HASH JOIN MERGE JOIN NESTED LOOP
- 多表连接的三种方式详解 HASH JOIN MERGE JOIN NESTED LOOP
- 多表连接的三种方式详解 HASH JOIN MERGE JOIN NESTED LOOP (转David)
- 多表连接的三种方式详解 HASH JOIN MERGE JOIN NESTED LOOP
- 多表连接的三种方式详解 HASH JOIN MERGE JOIN NESTED LOOP
- 表的连接方式:NESTED LOOP、HASH JOIN、SORT MERGE JOIN(修改)
- 多表连接的三种方式详解 HASH JOIN MERGE JOIN NESTED LOOP
- 多表连接的三种方式详解 HASH JOIN MERGE JOIN NESTED LOOP
- 多表连接的三种方式详解 HASH JOIN MERGE JOIN NESTED LOOP !
- 多表连接的三种方式详解 HASH JOIN MERGE JOIN NESTED LOOP .
- 多表连接的三种方式详解 HASH JOIN MERGE JOIN NESTED LOOP
- 多表连接的三种方式详解 HASH JOIN MERGE JOIN NESTED LOOP
- 分享三种oracle表的连接方式:NESTED LOOP、HASH JOIN、SORT MERGE JOIN
- (转)C#获取Internet服务器的时间
- 人无法避免的十个心理状态!
- 学习jQuery之旅--新手必须知道的常用方法
- java左移、右移、无符号右移、补码
- DataSet和DataTable
- 为何nested loop要求小表驱动,hash join又为何要求小表hashed?
- mysql中文乱码终结
- DWR
- 从windows到*nix(一) 软件的安装
- 学习jQuery之旅
- 曾仕强《领导的沟通艺术》读书笔记
- c日期时间
- 18.2.3 SHTTPD配置文件解析的分析设计
- 为什麼幸福 都是幻梦