Ho una domanda sul comando ALTER TABLE
su una tabella molto grande (quasi 30 milioni di righe). Una delle sue colonne è un varchar(255)
e vorrei ridimensionarlo a un varchar(40)
. In sostanza, vorrei cambiare la mia colonna eseguendo il comando seguente:Postgresql - modifica la dimensione di una colonna varchar
ALTER TABLE mytable ALTER COLUMN mycolumn TYPE varchar(40);
non ho alcun problema se il processo è molto lungo, ma a quanto pare il mio tavolo non è più leggibile durante il comando ALTER TABLE. C'è un modo più intelligente? Forse aggiungere una nuova colonna, copiare i valori dalla vecchia colonna, rilasciare la vecchia colonna e rinominare infine quella nuova?
Qualsiasi indizio sarà molto apprezzato! Grazie in anticipo,
Nota: utilizzo PostgreSQL 9.0.
Giusto per essere chiari: sapete, che il 'ridimensionamento' non renderà il tavolo occupare meno spazio? –
anche nel mio caso? Voglio dire che la colonna avrà una dimensione massima di 40 caratteri (quindi ottetti) anziché 255? – Labynocle
Se si dice 'varchar (255)' a PostgreSQL, allora _non_ alloca 255 byte per un valore la cui lunghezza reale è 40 byte. Assegnerà 40 byte (più un overhead interno). L'unica cosa che sarà 'cambiata da' ALTER TABLE' è il numero massimo di byte che puoi memorizzare in quella colonna senza ottenere un errore da PG. –