Det finns olika platser där VARCHAR
och TEXT
göra eller inte skilja sig åt. Några saker jag säger:
- Om den maximala längden är mer än 512 tecken , välj
TEXT
. - Använd aldrig
TINYTEXT
-- den har bara negativ i förhållande tillVARCHAR(255)
. - Använd inte
VARCHAR(255)
; välj ett rimligt max i stället för 255. (Detta är en mindre optimering som rör temptabellen i komplexa frågor.) - Använd
CHAR
endast för saker som är riktigt fast längd. I nästan alla sådana fall, klistra påCHARACTER SET ascii
(eller latin1). (Annars tar det mer plats än du förväntar dig. - Använd
CHARACTER SET ut8mb4
. (Undantag blir mer sällsynta.)
(Tyvärr, jag avviker. Tillbaka till ämnet...)
I-indexering, i layout av InnoDB-rader (det finns 4 olika ROW_FORMATs
), etc, VARCHAR(513)
kommer i princip inte att kunna skiljas från TEXT
.
Ett av få argument för VARCHAR
är att det begränsar butiken till den angivna längden. Men hur ofta är det viktigt?