Как добавить столбец (и индекс) в Postgres одновременно? - PullRequest
1 голос
/ 21 апреля 2020

Мне нужно удалить столбец из моей (большой) Postgres таблицы. Это достаточно просто, но есть также индекс для столбца.

Я вижу, что индекс удаляется неявно, когда я удаляю столбец с ALTER TABLE, но я понимаю, что должен использовать CONCURRENTLY, когда сбросив индекс.

Итак, мой вопрос:
Уместно ли выполнять эту операцию как два запроса. то есть:

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

Или это может привести к состоянию гонки, когда таблица изменения выполняется, пока индекс еще отбрасывается?

1 Ответ

1 голос
/ 21 апреля 2020

Удаление индекса обычно очень быстрая операция. Сначала я проверил бы его с большим индексом и посмотрел, действительно ли оно стоит того, чтобы удалить этот индекс отдельно.

Если вы обнаружите, что это действительно занимает много времени, используйте предложенные вами утверждения, но не пытайтесь запустить их параллельно (они будут блокировать друг друга), но в одном сеансе базы данных. Это сохранит время, когда таблица заблокирована, до минимума.

...