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当月所有的日期。为什么这里要使用正则而不使用>=或者<=了,因为使用正则它的索引才会生效,如果使用>=等它不会使用到索引,导致查询时会每条数据去比对,这样就会很慢。

我自己实际项目中的一个使用效果图:

pg数据库日期字段索引查询优化_第1张图片

你可能感兴趣的:(Python)