J'ai une question sur la ALTER TABLE
commande sur une très grande table (près de 30 millions de lignes). L'une de ses colonnes est a varchar(255)
et je voudrais la redimensionner en un varchar(40)
. En gros, je voudrais changer ma colonne en exécutant la commande suivante:
ALTER TABLE mytable ALTER COLUMN mycolumn TYPE varchar(40);
Je n'ai aucun problème si le processus est très long mais il semble que ma table ne soit plus lisible pendant la commande ALTER TABLE. Y a-t-il un moyen plus intelligent? Peut-être ajouter une nouvelle colonne, copier les valeurs de l'ancienne colonne, supprimer l'ancienne colonne et enfin renommer la nouvelle?
Tout indice sera grandement apprécié! Merci d'avance,
Remarque: j'utilise PostgreSQL 9.0.
varchar(255)
à PostgreSQL, il n'allouera pas 255 octets pour une valeur dont la longueur réelle est de 40 octets. Il allouera 40 octets (plus une surcharge interne). La seule chose qui be changed by the
ALTER TABLE` est le nombre maximum d'octets que vous pouvez stocker dans cette colonne sans obtenir une erreur de PG.
resizing
ne rendra pas la table moins encombrante?