Eu tenho uma pergunta sobre o ALTER TABLEcomando 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.
resizingnão fará com que a mesa ocupe menos espaço?