はむはむエンジニアぶろぐ

プログラミングやファイナンスや健康や目標設定などを中心にブログを書いてます

MySQLのvarcharサイズは256ではなく255がよい

MySQLのvarcharサイズ指定で256を見かけて「おや」と思った。
慣習的に255を使用していたが、その違いを調べてみた。

先に結論を述べるとvarchar(255)でよい。

varcharのサイズについて

そもそも、MySQLのvarcharサイズはバイト数ではなく文字数です。
これが非常に重要。

文字列型のストレージ要件

VARCHAR(M)、VARBINARY(M) カラム値が 0 から 255 バイトを必要とする場合は、L + 1 バイト、値が 255 バイト以上を必要とする可能性のある場合は、L + 2 バイト

https://dev.mysql.com/doc/refman/5.6/ja/storage-requirements.html

256よりは255のほうがいいです。varcharはlengthを最初に保存していて255は1バイトですが256だと2バイト必要になってしまうので。

https://togetter.com/li/54358

「文字数を確保する領域」と「文字列を確保する領域」が存在します。
varchar(256)としてしまうと「文字数を確保する領域」を2バイト使用することになります。

varcharのサイズを255か256か悩んでいるのなら255でよいはずです。

www.amazon.co.jp

www.amazon.co.jp