Phoenix 创建二级索引,字段顺序问题

T_SHOW 表如下,其中SHOW_DATE、EMAIL是Row key:

 

我需要这样查询:

select seq_id from T_SHOW where show_date='2018-11-24' and cam_site='cam4' order by seq_id desc limit 1;

 

所以我增加了这样的主键:

CREATE INDEX IDX_T_SHOW_CAM_SITE ON T_SHOW(CAM_SITE,SEQ_ID DESC);

 

之后查询,速度能够满足我目前的要求,但是查看执行计划,让我感到凌乱~~

 

这个执行计划,明显不合符我的想法。

首先应该按照日期来 RANGE SCAN才对。应为后续数据会越来越大,必须先按照日期来扫描。

 

于是,将原来的二级所以创建语句:

CREATE INDEX IDX_T_SHOW_CAM_SITE ON T_SHOW(CAM_SITE,SEQ_ID DESC);

改为下面这个:

CREATE INDEX IDX_T_SHOW_CAM_SITE ON T_SHOW(SHOW_DATE,CAM_SITE,SEQ_ID DESC);

就是这么一点差别,结果就不一样了。

结果如下:

 

结论:

二级索引创建的时候,请注意字段顺序。即使是字段本来就是Row Key。

集合自己的业务逻辑,顺序很重要。

 

END。

 

 

 

 

 

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值