PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Unterschied zwischen text und varchar (Zeichen variieren)

Es gibt keinen Unterschied, unter der Haube ist alles varlena (Array variabler Länge).

Überprüfen Sie diesen Artikel von Depesz:http://www.depesz.com/index.php/2010/03/02/charx-vs-varcharx-vs-varchar-vs-text/

Ein paar Highlights:

Um es zusammenzufassen:

  • char(n) – nimmt zu viel Platz ein, wenn es um Werte geht, die kürzer als n sind (füllt sie zu n auf ) und kann aufgrund des Hinzufügens von Leerzeichen am Ende zu subtilen Fehlern führen, außerdem ist es problematisch, das Limit zu ändern
  • varchar(n) – es ist problematisch, das Limit in der Live-Umgebung zu ändern (erfordert exklusive Sperre beim Ändern der Tabelle)
  • varchar – genau wie Text
  • Text – für mich ein Gewinner – über (n) Datentypen, weil es ihre Probleme nicht gibt, und über varchar – weil es einen eindeutigen Namen hat

Der Artikel führt detaillierte Tests durch, um zu zeigen, dass die Leistung von Einfügungen und Auswahlen für alle 4 Datentypen ähnlich ist. Es wirft auch einen detaillierten Blick auf alternative Möglichkeiten, die Länge bei Bedarf einzuschränken. Funktionsbasierte Beschränkungen oder Domänen bieten den Vorteil einer sofortigen Erhöhung der Längenbeschränkung, und auf der Grundlage, dass das Verringern einer Zeichenfolgenlängenbeschränkung selten ist, kommt depesz zu dem Schluss, dass eine von ihnen normalerweise die beste Wahl für eine Längenbeschränkung ist.