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

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

Phoenix 创建二级索引,字段顺序问题_第1张图片

 

我需要这样查询:

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);

 

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

Phoenix 创建二级索引,字段顺序问题_第2张图片

 

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

首先应该按照日期来 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);

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

结果如下:

Phoenix 创建二级索引,字段顺序问题_第3张图片

 

结论:

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

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

 

END。

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Phoenix)