Alles, was ich über Unterschiede von ihnen weiß, ist varchar
begrenzt und text
nicht. Die Dokumentation erwähnt dies nicht.
Ist das wirklich der einzige Unterschied? Keine Rücksicht auf Leistung oder etc?
database
postgresql
Eonil
quelle
quelle
Antworten:
Der Hintergrund hierfür ist: Das alte Postgres-System verwendete die PostQUEL-Sprache und einen Datentyp namens
text
(weil jemand dachte, dass dies ein guter Name für einen Typ ist, der Text speichert). Anschließend wurde Postgres konvertiert, um SQL als Sprache zu verwenden. Um SQL-Kompatibilität zu erreichentext
, wurde ein neuer Typvarchar
hinzugefügt , anstatt den Typ umzubenennen. Beide Typen verwenden jedoch intern dieselben C-Routinen.Jetzt ist bis zu einem gewissen Grad und an einigen Stellen ein
text
fester Code als Standardtyp festgelegt, falls nichts anderes abgeleitet werden kann. Außerdem sind die meisten Funktionen nur alstext
Argument oder als Rückgabe verfügbartext
. Die beiden Typen sind binär kompatibel, sodass das Casting eine triviale Parse-Time-Operation ist. Aber mittext
ist jedoch insgesamt noch natürlicher für das System.Aber abgesehen von diesen Feinheiten gibt es keinen merklichen Unterschied. Verwenden Sie, was für Sie schöner aussieht. ;-)
quelle
Siehe diese ähnliche Frage . Der Clou ist, dass es keinen Unterschied gibt, aber die Angabe einer maximalen Länge, wie sie im
varchar(n)
Allgemeinen nicht zu Ihren Gunsten ist, da sie mehr Platz beansprucht, aber die Leistung nicht verbessert.quelle
http://www.postgresql.org/docs/8.4/interactive/datatype-character.html
Text ohne angegebene Länge. Es gibt keine Leistungsunterschiede zwischen diesen beiden Typen.
quelle