phoenix 大表 小表 顺序 join查询

粗糙的全表扫描例子:

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的顺序很重要。要根据自己的业务场景选择。

 

我举的例子只是很粗的,phoenix join关联,还是要利用主键的优势。

将小表的查询结果,与大表的主键字段。进行ON条件关联。速度很快。

 

请参考官网:

http://phoenix.apache.org/joins.html

 

结论:大表要在前面。准确的说应该是结果集大小。

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值