PostgreSQL CREATE INDEX CONCURRENTLY: what you pay for not blocking writes
CREATE INDEX CONCURRENTLY's lock, two scans and transaction waits, INVALID index cleanup after failure, and transaction-block and partition limits, per PostgreSQL 18 docs.
postgresqlindexlockingdatabasemigration