gpt4 book ai didi

postgresql - 未考虑 Postgres 部分索引

转载 作者:行者123 更新时间:2023-12-02 02:19:06 24 4
gpt4 key购买 nike

我有一个大约有 2 亿行的表。在该表上,我有一个标记 deprecated ( bool 值)和一个 date_time (时间戳)。

我的表中充满了已弃用的值。目前,我有 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 考虑索引并且仅对索引中的子集进行日期比较?

最佳答案

使用查询后发现错误。

已弃用 IS FALSE != 已弃用 = FALSE。创建部分索引时,查询必须与 Postgres 完全相同才能获取它。

关于postgresql - 未考虑 Postgres 部分索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66696119/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com