Een VARCHAR(255)
kan maximaal 255 tekens opslaan, ongeacht het aantal bytes per teken dat vereist is voor de tekensetcodering.
De opslagvereiste is de lengte van de daadwerkelijk opgeslagen gegevens (niet het maximum), plus 1 of 2 bytes om de lengte van de gegevens op te slaan -- 1 byte wordt gebruikt tenzij de maximaal mogelijke lengte in bytes> 255... dus een VARCHAR(255) COLLATE utf8mb4
gebruikt 2 bytes om de lengte op te slaan, terwijl een VARCHAR(255) COLLATE ascii_general_ci
gebruikt 1 byte om de lengte op te slaan. Elke kolom kan niet meer dan 255 tekens bevatten.
Declareer de kolomgrootte zoals geschikt voor de gegevens die worden opgeslagen. Het gebruik van 255 is gebruikelijk, maar is meestal een rode vlag van slordig ontwerp, omdat het zeldzaam is dat deze specifieke waarde de maximale geschikte lengte van een kolom vertegenwoordigt.
Een CHAR(255) COLLATE utf8mb4
. daarentegen verbruikt altijd 255 × 4 (het maximaal mogelijke) bytes per kolom per rij, en 0 bytes om de lengte op te slaan, aangezien de opgeslagen lengte niet varieert. Deze kolommen zijn zelden geschikt, behalve wanneer de kolom altijd een bekende lengte heeft en de tekenset single-byte is, zoals een UUID, die CHAR(36) COLLATE ascii_general_ci
zou zijn. .
https:/ /dev.mysql.com/doc/refman/5.7/en/storage-requirements.html#data-types-storage-reqs-strings