http://blog.csdn.net/wisgood/article/details/17739177
这篇文章分析的很详细,配上了例子
得出的结果:
假设A.id=B.id,A表id=3的有N条,B表id=3的有M条,两个表关联时,reduce会处理id相同的记录,那reduce时比较的次数:
N*(1+M)
该公式可以验证博文中提到的各种例子,也可以证明为什么要把参与join的key(此处为id)重复记录较少的表放前面的原因,因为N++,或导致1+M次的增加。
补充的说法,跟join无关的、A、B表中不存在重复的key,都不会影响join的性能,所以不能简单的认为“把小表放前面”就能提高性能
比如A表中有一条记录id=4,而B表中没有id=4的记录,那不管A表中id=4的记录有多少条,都不会影响join性能