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 tiln
), 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.