Det afhænger af, hvad du bruger det til. Jeg hader at give sådan et generisk svar, men det er sandt. Prøv generelt at få datatypen så specifik som du kan. Hvis dine strenge aldrig vil overskride en øvre grænse for tegn, så gå med VARCHAR
fordi det vil være lidt mere effektivt. Hvis du har brug for mere plads, skal du bruge TEXT
. Hvis du ikke er sikker på, hvor meget plads din tekst vil optage, bør du sandsynligvis vælge TEXT
; ydelsesforskellen er ikke særlig stor, og det er bedre at være fremtidssikret end at risikere at skulle ændre den senere, når dine krav ændrer sig. Bare mine to øre.
I kommentarerne påpeger Pitarou, at hvis MySQL opretter en midlertidig tabel til din forespørgsel (se dette
), TEXT
kolonner vil ikke blive gemt i hukommelsen og skal læses fra disken, hvilket er meget langsommere. (Kilde
, nederst på siden.) Dette burde dog ikke betyde noget for de fleste forespørgsler.
Hvis nogen undrede sig over, hvordan PostgreSQL kan sammenlignes, fandt jeg dette benchmark der viser, at CHAR, VARCHAR og TEXT alle klarer sig lige godt. Så hvis du bruger Postgres, er det lige meget, hvilken type du bruger.