sql >> Database teknologi >  >> RDS >> PostgreSQL

Forskel mellem tekst og varchar (karakter varierende)

Der er ingen forskel, under hætten er det hele varlena (array med variabel længde).

Tjek denne artikel fra Depesz:http://www.depesz.com/index.php/2010/03/02/charx-vs-varcharx-vs-varchar-vs-text/

Et par højdepunkter:

For at opsummere det hele:

  • char(n) – tager for meget plads, når man har at gøre med værdier, der er kortere end n (udfylder dem til n ), og kan føre til subtile fejl på grund af tilføjelse af efterfølgende mellemrum, plus det er problematisk at ændre grænsen
  • varchar(n) – det er problematisk at ændre grænsen i live-miljøet (kræver eksklusiv lås under ændring af tabel)
  • varchar – ligesom tekst
  • tekst – for mig en vinder – over (n) datatyper, fordi det mangler deres problemer, og over varchar – fordi det har et særskilt navn

Artiklen udfører detaljerede tests for at vise, at ydeevnen af ​​indsæt og udvalg for alle 4 datatyper er ens. Det tager også et detaljeret kig på alternative måder at begrænse længden på, når det er nødvendigt. Funktionsbaserede begrænsninger eller domæner giver fordelen ved øjeblikkelig forøgelse af længdebegrænsningen, og på grundlag af, at formindskelse af en strenglængdebegrænsning er sjælden, konkluderer depesz, at en af ​​dem normalt er det bedste valg for en længdebegrænsning.



  1. Er det muligt at køre flere DDL-sætninger i en transaktion (inden for SQL Server)?

  2. Hvorfor overhovedet bruge *DB.exec() eller forberedte sætninger i Golang?

  3. Konverter datoformat til DD/MMM/ÅÅÅÅ-format i SQL Server

  4. Kontrollerer, om en postgresql-tabel eksisterer under python (og sandsynligvis Psycopg2)