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
CHAR
tylko 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?