A VARCHAR(255)
může uložit až 255 znaků, bez ohledu na počet bajtů na znak požadovaný kódováním znakové sady.
Požadavek na úložiště je délka skutečně uložených dat (nikoli maximální), plus 1 nebo 2 bajty pro uložení délky dat -- 1 bajt se použije, pokud maximální možná délka v bajtech> 255... takže VARCHAR(255) COLLATE utf8mb4
používá 2 bajty k uložení délky, zatímco VARCHAR(255) COLLATE ascii_general_ci
používá 1 bajt k uložení délky. Do žádného sloupce nelze uložit více než 255 znaků.
Deklarujte velikost sloupce jako vhodnou pro ukládaná data. Použití 255 je běžné, ale obvykle je to červená vlajka nedbalého designu, protože je vzácné, aby tato konkrétní hodnota smysluplně představovala maximální vhodnou délku sloupce.
Naproti tomu CHAR(255) COLLATE utf8mb4
vždy spotřebuje 255 × 4 (maximální možné) bajtů na sloupec na řádek a 0 bajtů k uložení délky, protože uložená délka se nemění. Tyto sloupce jsou zřídka vhodné, kromě případů, kdy má sloupec vždy známou délku a znaková sada je jednobajtová, jako je UUID, což by bylo CHAR(36) COLLATE ascii_general_ci
.
https:/ /dev.mysql.com/doc/refman/5.7/en/storage-requirements.html#data-types-storage-reqs-strings