En VARCHAR(255)
kan lagra upp till 255 tecken, oavsett antalet byte per tecken som krävs av teckenuppsättningens kodning.
Lagringskravet är längden på den faktiska lagrade datan (inte maximal), plus 1 eller 2 byte för att lagra längden på datan -- 1 byte används om inte den maximala möjliga längden i byte> 255... så en VARCHAR(255) COLLATE utf8mb4
använder 2 byte för att lagra längden, medan en VARCHAR(255) COLLATE ascii_general_ci
använder 1 byte för att lagra längden. Båda kolumnerna kan inte lagra mer än 255 tecken.
Ange kolumnstorleken som är lämplig för de data som lagras. Att använda 255 är vanligt, men vanligtvis en röd flagga med slarvig design, eftersom det är sällsynt att just detta värde på ett meningsfullt sätt representerar den maximala lämpliga längden på en kolumn.
Däremot en CHAR(255) COLLATE utf8mb4
förbrukar alltid 255 × 4 (högst möjliga) byte per kolumn per rad och 0 byte för att lagra längden, eftersom den lagrade längden inte varierar. Dessa kolumner är sällan lämpliga, förutom när kolumnen alltid har en känd längd och teckenuppsättningen är en byte, till exempel ett UUID, som skulle vara CHAR(36) COLLATE ascii_general_ci
.
https:/ /dev.mysql.com/doc/refman/5.7/en/storage-requirements.html#data-types-storage-reqs-strings