HashAggregate, GroupAggregate, hash join

1. hash_join算法原理
http://wenku.baidu.com/link?url=OItLNA-dBWluVwyUNFCl6AWbTkrLfOZZcBNOsmgvVg46QGX9gauDVl0Nt1Bqbo-aSZ9iYo-cXHxAHJeLGRwEmFCa8tFPLoutgvn8j66rxoe
::倾向于用小表做hash表也即为build表(生成一份数据放在内存中),另一个表为probe表,取probe表每行数据用相同的hash函数计算与build表做比较。

Pseudocode for Hash Join

for (j = 0; j < length(inner); j++)
       hash_key = hash(inner[j]);
      append(hash_store[hash_key], inner[j]);
for (i = 0; i < length(outer); i++)
      hash_key = hash(outer[i]);
for (j = 0; j < length(hash_store[hash_key]); j++)
     if (outer[i] == hash_store[hash_key][j])
     output(outer[i], inner[j]);

(上面代码片段来自BRUCE MOMJIAN 的ppt《Explaining the Postgres Query Optimizer》http://momjian.us/presentations)


2.Greenplum聚合函数的两种实现:HashAggregate与GroupAggregate
http://blog.csdn.net/scutshuxue/article/details/6791157

:: 需要理解hashAggregate 与 groupAggregate内部数学实现。


参考:

深入理解Oracle表(5):三大表连接方式详解之Hash Join的定义,原理,算法,成本,模式和位图

http://blog.csdn.net/wind520/article/details/42914041


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值