Existují různá místa, kde je VARCHAR
a TEXT
lišit se nebo ne. Některé věci říkám:
- Pokud je maximální délka více než 512 znaků , přejděte pomocí
TEXT
. - Nikdy nepoužívejte
TINYTEXT
-- má pouze zápory vzhledem kVARCHAR(255)
. - Nepoužívejte
VARCHAR(255)
; vyberte rozumné maximum místo 255. (Jedná se o menší optimalizaci týkající se dočasné tabulky ve složitých dotazech.) - Použijte
CHAR
pouze pro věci, které mají skutečně pevnou délku. Téměř ve všech takových případech použijteCHARACTER SET ascii
(nebo latina1). (Jinak to zabere více místa, než očekáváte. - Použijte
CHARACTER SET ut8mb4
. (Výjimky jsou čím dál vzácnější.)
(Omlouvám se, odbočuji. Zpět k tématu...)
I indexování v rozložení řádků InnoDB (existují 4 různé ROW_FORMATs
), atd., VARCHAR(513)
bude v podstatě k nerozeznání od TEXT
.
Jeden z mála argumentů pro VARCHAR
je, že omezuje obchod na danou délku. Ale jak často je to důležité?