Tudo o que sei sobre as diferenças deles é varchar
tem limite e text
não é. A documentação não menciona isso.
Essa é realmente a única diferença? Nenhuma consideração sobre desempenho ou etc?
database
postgresql
Eonil
fonte
fonte
Respostas:
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 otext
tipo, um novo tipovarchar
foi 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 comotext
argumento ou retornotext
. 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 usotext
ainda é 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ê. ;-)
fonte
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.fonte
http://www.postgresql.org/docs/8.4/interactive/datatype-character.html
texto sem comprimento declarado. Não há diferenças de desempenho entre esses dois tipos.
fonte