Was ist der Unterschied zwischen "varchar" und "text" in PostgreSQL?


Antworten:


22

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 erreichen text, wurde ein neuer Typ varcharhinzugefü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 textfester Code als Standardtyp festgelegt, falls nichts anderes abgeleitet werden kann. Außerdem sind die meisten Funktionen nur als textArgument oder als Rückgabe verfügbar text. 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. ;-)


Oh gute Erklärung. Ich verwende "Text", da mir die Kompatibilität nicht wichtig ist, welche Blöcke die Vorteile eines bestimmten Produkts nutzen. Vielen Dank!
Eonil

1

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.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.