¿Hay algún método para hacer ALTER COLUMN en postgres 12 en una mesa enorme sin esperar toda la vida?
Intento convertir un campo de bigint a smallint:
ALTER TABLE huge ALTER COLUMN result_code TYPE SMALLINT;Tarda 28 horas, ¿hay algún método más inteligente? La tabla tiene secuencias, claves y claves foráneas
La tabla tiene que ser reescrita, y tienes que esperar.
Si tiene varias columnas cuyo tipo de datos desea cambiar, puede usar varias cláusulas ALTER COLUMN en una sola declaración ALTER TABLE y ahorrar tiempo de esa manera.
Una idea alternativa sería usar la replicación lógica: configure una copia vacía de la base de datos ( pg_dump -s ), donde su tabla grande se define con columnas de tamaño smallint . Replique su base de datos a esa base de datos y cambie tan pronto como la replicación se haya puesto al día.