1. hash_join算法原理
http://wenku.baidu.com/link?url=OItLNA-dBWluVwyUNFCl6AWbTkrLfOZZcBNOsmgvVg46QGX9gauDVl0Nt1Bqbo-aSZ9iYo-cXHxAHJeLGRwEmFCa8tFPLoutgvn8j66rxoe
::倾向于用小表做hash表也即为build表(生成一份数据放在内存中),另一个表为probe表,取probe表每行数据用相同的hash函数计算与build表做比较。
http://blog.csdn.net/scutshuxue/article/details/6791157
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)
http://blog.csdn.net/scutshuxue/article/details/6791157
:: 需要理解hashAggregate 与 groupAggregate内部数学实现。
参考:
深入理解Oracle表(5):三大表连接方式详解之Hash Join的定义,原理,算法,成本,模式和位图
http://blog.csdn.net/wind520/article/details/42914041