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
CHARpouze 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é?