VARCHAR(255)
文字セットエンコーディングに必要な1文字あたりのバイト数に関係なく、最大255文字を格納できます。
ストレージ要件は、保存される実際のデータの長さ(最大ではない)に、データの長さを保存するための1バイトまたは2バイトを加えたものです。バイト単位の可能な最大長が255を超えない限り、1バイトが使用されます。 code> VARCHAR(255)COLLATE utf8mb4 VARCHAR(255)COLLATE ascii_general_ci
が長さを格納するために、2バイトを使用します 長さを格納するために1バイトを使用します。どちらの列にも255文字以下を格納できます。
保存するデータに応じて、列のサイズを宣言します。 255を使用するのが一般的ですが、この特定の値が列の適切な最大長を意味のある形で表すことはめったにないため、通常はずさんなデザインの危険信号です。
対照的に、 CHAR(255)COLLATE utf8mb4
格納される長さは変化しないため、常に1行あたり1行あたり255×4(可能な最大)バイトを消費し、長さを格納するために0バイトを消費します。列が常に既知の長さであり、文字セットがUUIDなどのシングルバイトである場合を除いて、これらの列が適切になることはめったにありません。これは、 CHAR(36)COLLATE ascii_general_ci
になります。 。
https:/ /dev.mysql.com/doc/refman/5.7/en/storage-requirements.html#data-types-storage-reqs-strings