PostgreSQL更新时间过长



我有一个查询更新,ny选择查询限制为1000:

UPDATE id SET satus=201(ids..(中的唯一代码所在位置

我的查询已经有索引了,但花了很长时间

CREATE UNIQUE INDEX id_idx ON public.id USING btree (id);

->  Index Scan using id_idx on id (cost=0.56..4280.29 rows=500 width=811) (actual time=0.758..11.244 rows=500 loops=1)
Index Cond: ((id)::numeric = ANY (ids..)
Planning Time: 3.087 ms
Execution Time: 1543.567 ms

我需要执行低于1000ms的

在我看来,您想要的索引在uniquecode列上,而不是在id列上:

CREATE UNIQUE INDEX uq_idx ON public.id USING btree (uniquecode);

注意,如果id是表的主键,那么它应该已经有一个btree索引了

您没有显示完整的执行计划,也没有显示实际的查询,但如果您显示的信息片段是准确的,那么时间不会花在索引扫描上,而是花在更新本身上。

表上可能有很多索引和/或长时间运行的触发器。

最新更新