Qual é a diferença entre o tipo "varchar" e o "texto" no PostgreSQL?


15

Tudo o que sei sobre as diferenças deles é varchartem limite e textnão é. A documentação não menciona isso.

Essa é realmente a única diferença? Nenhuma consideração sobre desempenho ou etc?


1
Isso realmente deve ser migrado para os administradores de banco de dados . Não tem nada a ver com a administração do servidor.
Evan Carroll

Respostas:


22

O pano de fundo disso é: O antigo sistema Postgres usava a linguagem PostQUEL e usava um tipo de dados chamado text(porque alguém achou que esse era um bom nome para um tipo que armazena texto). Em seguida, o Postgres foi convertido para usar o SQL como idioma. Para obter compatibilidade com o SQL, em vez de renomear o texttipo, um novo tipo varcharfoi adicionado. Mas ambos os tipos usam as mesmas rotinas C internamente.

Agora, até certo ponto e em alguns lugares, texté codificado como um tipo padrão, caso nada mais possa ser derivado. Além disso, a maioria das funções está disponível apenas como textargumento ou retorno text. Os dois tipos são compatíveis com binários, portanto, a conversão é uma operação trivial de tempo de análise. Mas o uso textainda é mais natural para o sistema.

Mas, além desses pontos, não há diferença perceptível. Use o que parecer mais bonito para você. ;-)


Oh boa explicação. Usarei 'texto' porque não me importo com a compatibilidade que bloqueia o uso de benefícios de produtos específicos. Obrigado!
Eonil

1

Veja esta pergunta semelhante . O problema é que não há diferença, mas especificar um comprimento máximo como varchar(n)geralmente não é a seu favor, pois ele usa mais espaço, mas não melhora o desempenho.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.