如何同时在Postgres中删除列(和索引)?

问题描述 投票:1回答:1

我需要从我的(大)Postgres表中删除一列。这很简单,但是列上也有一个索引。我可以看到使用ALTER TABLE删除列时隐式删除​​了索引,但是我知道删除索引时应该使用CONCURRENTLY。所以我的问题是:是否适合作为两个查询来执行此操作。即:

DROP INDEX CONCURRENTLY IF EXISTS myTable_myColumn_idx;
ALTER TABLE myTable DROP COLUMN IF EXISTS myColumn;

或者这可能导致竞争状态,在仍然删除索引的情况下执行alter表?

sql postgresql ddl
1个回答
0
投票

删除索引通常是非常快速的操作。我将首先使用大索引对其进行测试,然后看看是否值得单独删除该索引。

如果发现确实需要很长时间,请使用您建议的语句,但不要尝试在单个数据库会话中并行运行它们(它们将彼此锁定)。这样可以将表锁定的时间降至最少。

© www.soinside.com 2019 - 2024. All rights reserved.