Tengo una pregunta sobre el ALTER TABLE
comando en una tabla realmente grande (casi 30 millones de filas). Una de sus columnas es a varchar(255)
y me gustaría cambiar su tamaño a a varchar(40)
. Básicamente, me gustaría cambiar mi columna ejecutando el siguiente comando:
ALTER TABLE mytable ALTER COLUMN mycolumn TYPE varchar(40);
No tengo ningún problema si el proceso es muy largo, pero parece que mi tabla ya no es legible durante el comando ALTER TABLE. ¿Hay una manera más inteligente? ¿Quizás agregar una nueva columna, copiar valores de la columna anterior, soltar la columna antigua y finalmente cambiar el nombre de la nueva?
Cualquier pista será muy apreciada! Gracias por adelantado,
Nota: Yo uso PostgreSQL 9.0.
varchar(255)
a PostgreSQL, entonces no asignará 255 bytes para un valor cuya longitud real es 40 bytes. Asignará 40 bytes (más algunos gastos generales internos). Lo único que be changed by the
ALTERARÁ LA TABLA` es el número máximo de bytes que puede almacenar en esa columna sin que PG obtenga un error.
resizing
eso no hará que la mesa ocupe menos espacio?