sql >> Databasteknik >  >> RDS >> Mysql

Varchar eller textdatatyper för strängar med upp till några tusen tecken

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 till VARCHAR(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?



  1. Vad är storleksgränsen för ett varchar2 PL/SQL-underprogramargument i Oracle?

  2. Hur man tar reda på om mysql-index passar helt och hållet i minnet

  3. Analysera PostgreSQL-tabellstatistik

  4. Vad är skillnaden mellan `->>` och `->` i Postgres SQL?