1. 程式人生 > >pg資料庫日期欄位索引查詢優化

pg資料庫日期欄位索引查詢優化

有時候我們在使用sql查詢的時候,會涉及到根據日期查詢內容,通常做法都是通過日期欄位 >= 來判斷日期範圍的,當資料量大了,你會發現查詢速度就會很慢,這時候我們可以做些優化,給日期欄位建立索引,更改查詢語句,如下例子:

        select * from fcz_moment where dep_airport_code='CTU' and air_date ~'2018-02|2018-03|2018-04|2018-05|2018-06|2018-07|2018-08|2018-09|2018-10' OR air_date IN('2018-11-05', '2018-11-06',這裡省略一些日期)


這裡我的需求是需要根據條件查詢日期在 '2018-02-01'至'2018-11-06' 之間的資料,所以,我將air_date欄位建了索引之後,先通過正則匹配出不包含2018-02和2018-11以為其它所有完整月份的資料,然後在通過 in來匹配2018-02當月所有的日期和2018-11當月所有的日期。為什麼這裡要使用正則而不使用>=或者<=了,因為使用正則它的索引才會生效,如果使用>=等它不會使用到索引,導致查詢時會每條資料去比對,這樣就會很慢。

我自己實際專案中的一個使用效果圖: