MAPJOINメモ

table_m : 10000件
table_a : 1000件
table_b : 1000件

select count(*) from table_m m
join table_a a on (m.link1=a.id)
join table_b b on (m.link2=b.id)

Time taken: 42.128 seconds
  • MapJoin

メモリにハッシュテーブルを持ってMapフェーズのみでJoinをしてくれる

select / *+ MAPJOIN(table_a,table_b) */ count(*) 
from table_m m
join table_a a on (m.link1=a.id)
join table_b b on (m.link2=b.id)

--result
Time taken: 27.502 seconds  

環境変数を設定することで
指定サイズまでのテーブルは自動でMapJoinしてくれる

set hive.auto.convert.join=true;
set hive.smalltable.filesize=10000;

MySQL :: MySQL 4.1 リファレンスマニュアル :: 5.2.8 MySQL による ORDER BY の最適化