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。