Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql Postgres部分索引未计入帐户_Postgresql_Indexing - Fatal编程技术网

Postgresql Postgres部分索引未计入帐户

Postgresql Postgres部分索引未计入帐户,postgresql,indexing,Postgresql,Indexing,我有一张大约2亿行的桌子。在那张表上,我有一个不推荐使用的布尔标志和一个日期时间戳 我的表中充满了不推荐使用的值。目前,我在2亿美元中有3个值没有被否决 所以我尝试在弃用标志上添加一个部分索引,但postgres并没有考虑到这一点,而是继续进行Seq扫描 以下是创建索引的方式: CREATE INDEX api_kpi_date_time_idx ON public.api_kpi USING btree (date_time) WHERE (deprecated = false) 我试着解释

我有一张大约2亿行的桌子。在那张表上,我有一个不推荐使用的布尔标志和一个日期时间戳

我的表中充满了不推荐使用的值。目前,我在2亿美元中有3个值没有被否决

所以我尝试在弃用标志上添加一个部分索引,但postgres并没有考虑到这一点,而是继续进行Seq扫描

以下是创建索引的方式:

CREATE INDEX api_kpi_date_time_idx ON public.api_kpi USING btree (date_time) WHERE (deprecated = false)
我试着解释一下:

explain select ak.id from api_kpi ak
where ak.deprecated is false and date_time < now() 
我得到以下信息:

Seq Scan on api_kpi ak  (cost=0.00..10208288.72 rows=80594624 width=37)
  Filter: ((deprecated IS FALSE) AND (date_time < now()))
查询运行几乎需要5分钟


我需要做什么才能确保Postgres考虑到索引,并且只对索引中的子集进行日期比较?

在处理查询后发现错误


不推荐为假!=不推荐=错误。创建部分索引时,查询必须完全相同,Postgres才能获取它。

不推荐使用的列可以为空吗?添加索引后是否运行了分析?发现问题。。。。。不推荐为FALSE时,索引不会拾取该值。但deprecated=FALSE是。谢谢你的帮助!美好的谢谢你的回复+1.