VARCHARは255がいいのか、MySQLの公式みてみた。

file
この表を見ると
varcharは文字数+1byteで
下の分を見ると、255文字以下は長さデータ1bytesって言ってるので、
この1bytesは多分長さデータなんでしょうね。

255を超えると2byteになるので、255文字だと256bytesで256文字だと258bytes使うってことですね。

In contrast to CHAR, VARCHAR values are stored as a 1-byte or 2-byte length prefix plus data. The length prefix indicates the number of bytes in the value. A column uses one length byte if values require no more than 255 bytes, two length bytes if values may require more than 255 bytes.
https://dev.mysql.com/doc/refman/8.0/en/char.html

『翻訳』
CHARとは対照的に、VARCHARの値は1バイトまたは2バイトの長さプレフィックスとデータとして格納されます。長さプレフィックスは、値のバイト数を表します。カラムは、値が255バイト以下であれば1バイト、255バイト以上であれば2バイトの長さを使用します。

結果

255も256もそんな変わんない気がする

ぜんぶきれいに200とかにしとくのが綺麗でいいんじゃないかと思う。

追記

 Specified key was too long; max key length is 767 bytes

こういうエラー出ることがありまして。
これが出たときに設定してたのが、varchar(200)だったんですが。

あれ、結構短く設定してるのになと思ったんですが、
utf-8は4バイト扱えるんですが、DBの場合はutf-8は3バイトしか扱えないらしく。
4バイト扱えるutf8mb4のが出てきた?みたいなことで、
200 × 4 で800になってしまい。767を超えてしまったと。。。

ふむ、実質190ぐらいが限界であとは、text型にした方がいいのかな。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です