Phoenix 建立二級索引,欄位順序問題
阿新 • • 發佈:2019-02-13
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。