Eu tenho uma pergunta sobre o ALTER TABLE
comando em uma tabela muito grande (quase 30 milhões de linhas). Uma de suas colunas é a varchar(255)
e eu gostaria de redimensioná-la para a varchar(40)
. Basicamente, gostaria de alterar minha coluna executando o seguinte comando:
ALTER TABLE mytable ALTER COLUMN mycolumn TYPE varchar(40);
Não tenho nenhum problema se o processo for muito longo, mas parece que minha tabela não é mais legível durante o comando ALTER TABLE. Existe uma maneira mais inteligente? Talvez adicione uma nova coluna, copie valores da coluna antiga, solte a coluna antiga e finalmente renomeie a nova?
Qualquer pista será muito apreciada! Desde já, obrigado,
Nota: Eu uso o PostgreSQL 9.0.
varchar(255)
ao PostgreSQL, ele não alocará 255 bytes para um valor cujo comprimento real seja 40 bytes. Alocará 40 bytes (mais alguma sobrecarga interna). A única coisa que be changed by the
ALTER TABLE` é o número máximo de bytes que você pode armazenar nessa coluna sem obter um erro do PG.
resizing
não fará com que a mesa ocupe menos espaço?