1. 程式人生 > >Phoenix 建立二級索引,欄位順序問題

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。