Ответ
Для добавления индекса без блокировки таблицы в PostgreSQL можно использовать CONCURRENTLY:
CREATE INDEX CONCURRENTLY idx_name ON table_name(column_name);
Особенности:
- Индекс строится в фоне, не блокируя запись
- Занимает больше времени и ресурсов
- При неудаче оставляет недействительный индекс (требуется удалить вручную)
- Не поддерживается в транзакциях
В MySQL/InnoDB аналогично работает ALGORITHM=INPLACE:
ALTER TABLE table_name
ADD INDEX idx_name (column_name) ALGORITHM=INPLACE, LOCK=NONE;