Istnieje wiele miejsc, w których VARCHAR i TEXT różnią się lub nie. Niektóre rzeczy, które mówię:
- Jeśli maksymalna długość przekracza 512 znaków , przejdź z
TEXT. - Nigdy nie używaj
TINYTEXT-- ma tylko negatywy względemVARCHAR(255). - Nie używaj
VARCHAR(255); wybierz rozsądną wartość maksymalną zamiast 255. (Jest to niewielka optymalizacja odnosząca się do tabeli tymczasowej w złożonych zapytaniach). - Użyj
CHARtylko dla rzeczy, które mają naprawdę stałą długość. W prawie każdym takim przypadku dodajCHARACTER SET ascii(lub łac1). (W przeciwnym razie zajmie więcej miejsca, niż się spodziewasz. - Użyj
CHARACTER SET ut8mb4. (Wyjątki stają się coraz rzadsze).
(Przepraszam, mam dygresję. Wróćmy do tematu...)
I indeksowanie, w układzie wierszy InnoDB (istnieją 4 różne ROW_FORMATs ), itp, VARCHAR(513) będzie zasadniczo nie do odróżnienia od TEXT .
Jeden z niewielu argumentów dla VARCHAR jest to, że ogranicza sklep do podanej długości. Ale jak często jest to ważne?