mapjion會把小表全部讀入記憶體中,在map階段直接拿另外乙個表的資料和記憶體中表資料做匹配,由於在map是進行了join操作,省去了reduce執行的效率也會高很多
使用乙個表測試,該錶時5分鐘表,資料很少,大概60多w。
測試日誌裡包含多個字段,其中有uid和uip。測試場景為給出2個uid,取uid共同的uip。
三個不同uid
select /*+ mapjoin(c) */
distinct c.ip from
(select /*+ mapjoin(a) */
a.ip from
(select ip from t where uid=uid1) a
join
(select ip from t where uid=uid2) b
on a.ip=b.ip
) cjoin
(select ip from t where uid=uid3) d
on c.ip=d.ip
耗時 79.915 seconds 用4個mr
不適用mapjoin
select
distinct c.ip from
(select
a.ip from
(select ip from t where uid=uid1) a
join
(select ip from t where uid=uid2) b
on a.ip=b.ip
) cjoin
(select ip from t where uid=uid3) d
on c.ip=d.ip
4個mr 耗時:90.932 seconds
結果一致.
效率提高了12%
union in 效率對比
對於索引列來最好使用union all,因複雜的查詢 包含運算等 將使or in放棄索引而全表掃瞄,除非你能確定or in會使用索引 對於只有非索引字段來說你就老老實實的用or 或者in,因為 非索引字段本來要全表掃瞄而union all 只成倍增加表掃瞄的次數 對於既有索引字段 索引字段有效 又包...
Remoting VS WCF 傳輸效率對比
1 測試平台 cpu intel core tm 2 duo cpu e8300 2.83ghz 記憶體 1.98g記憶體 平台 windows 2003 service 2 測試內容 測試int,stream,dataset,class在remoting和wcf下的傳輸效率 服務宿主 window...
windows檔案讀取效率對比
readfile1.cpp是使用記憶體對映檔案讀取檔案,readfile2.cpp是普通readfile readfile1.cpp char buf 10001 const char env getenv data dir char wsp 255 sprintf wsp,s demo.dbf e...