Qual a diferença entre os tipos “varchar” e “text” no PostgreSQL?

14

Tudo o que sei sobre 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?

    
por Eonil 27.02.2011 / 12:07

3 respostas

22

O pano de fundo disso é: O sistema Postgres antigo usava a linguagem PostQUEL e usava um tipo de dados chamado text (porque alguém achava que esse era um bom nome para um tipo que armazena texto). Em seguida, o Postgres foi convertido para usar o SQL como sua linguagem. Para obter compatibilidade com SQL, em vez de renomear o tipo text , um novo tipo varchar foi adicionado. Mas os dois 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 um argumento text ou retornando text . Os dois tipos são binários compatíveis, portanto, converter é uma operação trivial de tempo de análise. Mas usar text ainda é, no geral, mais natural para o sistema.

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

    
por 27.02.2011 / 20:13
1

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

    
por 17.01.2013 / 09:18
0

link

character varying(n), varchar(n)        variable-length with limit
text                                    variable unlimited length

texto sem comprimento declarado. Não há diferenças de desempenho entre esses dois tipos.

    
por 27.02.2011 / 12:32