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
CHARendast 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?