Има различни места, където 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
е, че ограничава магазина до дадената дължина. Но колко често е важно това?