Portanto, muitos bancos de dados armazenarão o prefixo de comprimento para um varchar
campo em 1 byte se o comprimento for menor que 255 e 2 bytes se for maior. Por exemplo, os documentos do MySQL dizem:
Em contraste com CHAR, os valores VARCHAR são armazenados como um prefixo de comprimento de 1 ou 2 bytes mais dados. O prefixo de comprimento indica o número de bytes no valor. Uma coluna usa um byte de comprimento se os valores não exigirem mais de 255 bytes, dois bytes de comprimento se os valores exigirem mais de 255 bytes.
Eu estou querendo saber se a mesma coisa é verdade para Redshift? Eu vasculhei os documentos, mas não consigo encontrá-lo na vida de mim!
A propósito, faço a pergunta porque um colega de trabalho construiu todo o nosso data warehouse usando varchar(256)
para a maioria dos campos - todas as restrições de tamanho de campo curto, nenhum dos benefícios do armazenamento de 1 byte (a menos que o Redshift use 2 bytes independentemente).
De acordo com esta página, os varchars do Redshift usam "4 bytes + total de bytes para caracteres...". O tamanho armazenado do varchar é provavelmente um problema muito menor com o Redshift devido à compactação das colunas.