Има различни места, където VARCHAR и TEXT правят или не се различават. Някои неща казвам:
- Ако максималната дължина е повече от 512 знака , отидете с
TEXT. - Никога не използвайте
TINYTEXT-- има само отрицателни стойности спрямоVARCHAR(255). - Не използвайте
VARCHAR(255); изберете разумен максимум вместо 255. (Това е малка оптимизация, свързана с временната таблица в сложни заявки.) - Използвайте
CHARсамо за неща, които имат наистина фиксирана дължина. В почти всички такива случаи, фиксирайтеCHARACTER SET ascii(или латински 1). (В противен случай ще заеме повече място, отколкото очаквате. - Използвайте
CHARACTER SET ut8mb4. (Изключенията стават все по-редки.)
(Съжалявам, отклоних се. Обратно към темата...)
Индексирам, в оформлението на InnoDB редове (има 4 различни ROW_FORMATs ) и т.н., VARCHAR(513) ще бъде по същество неразличим от TEXT .
Един от малкото аргументи за VARCHAR е, че ограничава магазина до дадената дължина. Но колко често е важно това?