我在 ny 選擇查詢上有一個限制為 1000 的查詢更新:
UPDATE id SET satus = 201 WHERE uniquecode in (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
我需要在 1000 毫秒以下執行
uj5u.com熱心網友回復:
在我看來,您想要的索引在uniquecode列上,而不是id列上:
CREATE UNIQUE INDEX uq_idx ON public.id USING btree (uniquecode);
請注意,如果id是您的表的主鍵,那么它應該已經有一個 btree 索引。
uj5u.com熱心網友回復:
你沒有展示完整的執行計劃,也沒有展示實際的查詢,但是如果你展示的資訊碎片是準確的,那么時間不是花在索引掃描上,而是花在更新本身上。
表上可能有很多索引和/或長時間運行的觸發器。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/415489.html
標籤:
