我有一个查询更新,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索引了
您没有显示完整的执行计划,也没有显示实际的查询,但如果您显示的信息片段是准确的,那么时间不会花在索引扫描上,而是花在更新本身上。
表上可能有很多索引和/或长时间运行的触发器。