Tout ce que je sais de leurs différences, c'est leur varchar
limite, et ce text
n'est pas le cas. La documentation n'en fait pas mention.
Est-ce vraiment la seule différence? Aucune considération sur les performances ou etc?
database
postgresql
Eonil
la source
la source
Réponses:
Le contexte est le suivant: l'ancien système Postgres utilisait le langage PostQUEL et utilisait un type de données nommé
text
(parce que quelqu'un pensait que c'était un bon nom pour un type qui stocke du texte). Postgres a ensuite été converti pour utiliser SQL comme langage. Pour obtenir la compatibilité SQL, au lieu de renommer letext
type, un nouveau type avarchar
été ajouté. Mais les deux types utilisent les mêmes routines C en interne.Maintenant, dans une certaine mesure et à certains endroits,
text
est codé en dur comme type par défaut, au cas où rien d'autre ne pourrait être dérivé. De plus, la plupart des fonctions ne sont disponibles que pour prendre untext
argument ou pour retournertext
. Les deux types sont compatibles binaires, donc la conversion est une opération d'analyse temporelle triviale. Mais l'utilisationtext
reste globalement plus naturelle pour le système.Mais à part ces petits points, il n'y a pas de différence notable. Utilisez celui qui vous semble le plus joli. ;-)
la source
Voir cette question similaire . L'essentiel est qu'il n'y a pas de différence, mais spécifier une longueur maximale telle que
varchar(n)
généralement n'est pas en votre faveur, car il utilise plus d'espace mais n'améliore pas les performances.la source
http://www.postgresql.org/docs/8.4/interactive/datatype-character.html
texte sans longueur déclarée. Il n'y a aucune différence de performances entre ces deux types.
la source