gpt4 book ai didi

postgresql - 为什么删除索引比创建索引花费的时间更长?

转载 作者:行者123 更新时间:2023-11-29 11:14:29 27 4
gpt4 key购买 nike

在 postgresql 中,我为一个大表添加了一个索引,大约花了 1 秒(坦率地说,这让我很吃惊)。

当我去drop索引的时候,我让它运行了>200秒没有返回,最后取消了drop操作。

CREATE INDEX idx_cservicelocationdivisionstatus_inversed
ON cservicelocationdivisionstatus (cservicelocationdivisionid, startdate, enddate DESC);

花费很少的时间,但是

DROP INDEX idx_cservicelocationdivisionstatus_inversed;

花了很长时间,我放弃并取消了。

cservicelocationdivisionstatus 表有 6 列和大约 31 万行数据。

为什么删除索引比创建索引花费的时间长得多?

编辑:This page表示对于 mySql,具有多个索引的表将复制该表并重新插入所有没有您要删除的索引的行。 (更糟糕的是,对于 mySql,如果你在同一个表上删除多个索引,它会为你要删除的每个索引重新复制一次表,而不是聪明地在没有所有索引的情况下重新复制数据一次下降。)postgres 会发生这样的事情吗?

最佳答案

您提到的大小的表上的索引通常应该能够很快删除(当然比 3 分钟以上更快)。在我看来,表/索引正在使用中,因此无法删除。

您可以通过查询 pg_stat_activity 表并查找涉及您创建索引的表的事件来确认这一点。

关于postgresql - 为什么删除索引比创建索引花费的时间更长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26346147/

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