phoenix 大表 小表 順序 join查詢
阿新 • • 發佈:2018-12-20
粗糙的全表掃描例子:
T_EXTENSION_ALL_DATAS_LOGIN 大表,200W+資料。
T_EXTENSION_ALL_DATAS_SHOW 小表,幾十條資料。
select T1.LOGIN_DATE,T1.COUNTRY,T1.IP,T1.BROWSER,T1.USER_NAME,T1.GENDER,T1.EMAIL,T2.TIME_SPEND,T2.CAM_SITE,T2.TOKEN_EARNED,T2.REVENUE,T2.TIPS_SENT,T2.TOY FROM T_EXTENSION_ALL_DATAS_LOGIN T1 INNER JOIN T_EXTENSION_ALL_DATAS_SHOW T2 ON (T1.LOGIN_DATE=T2.SHOW_DATE AND T1.EMAIL = T2.EMAIL);
查詢結果:6 rows selected (0.646 seconds)
如果將大小表的join順序調換一下:
select T1.SHOW_DATE,T1.EMAIL,T1.TIME_SPEND,T1.CAM_SITE,T1.TOKEN_EARNED,T1.REVENUE,T1.TIPS_SENT,T1.TOY,T2.COUNTRY,T2.IP,T2.BROWSER,T2.USER_NAME,T2.GENDER FROM T_EXTENSION_ALL_DATAS_SHOW T1 INNER JOIN T_EXTENSION_ALL_DATAS_LOGIN T2 ON (T1.SHOW_DATE=T2.LOGIN_DATE AND T1.EMAIL = T2.EMAIL);
查詢結果:超時報錯!!
exception: org.apache.hadoop.hbase.ipc.CallTimeoutException: Call id=145561, waitTime=60008, rpcTimeout=60000
所以,大小表join的順序很重要。要根據自己的業務場景選擇。
結論:大表要在前面。