MySQL文字列型“varchar(255)”と“varchar(256)”結局どっちが良い?

difference-between-varchar255-and-varchar256-in-mysql-top

押忍! dice(@dice_dDtea)です。

varchar型を使うとき、
指定する数字はいくつがいいのだろうか?

調べてると「255」「256」をよく目にする。

varchar(255) と varchar(256) でどっちを使うほうが良いか論争もあるくらいだ。

『MySQLのVARCHARサイズについて – Togetterまとめ』
http://togetter.com/li/54358

今回この結論を出して見たいと思う。

「255」と「256」違いはあるのか?

先に言っておきます、
ここに致命的とか、劇的ビフォーアフターとか・・・、

大きな違いはありません!

しかし、

小さな違いはあります。

小さなね。

スポンサード リンク

知恵袋にこんな質問がありました

【Q】

mysqlの文字列型で
varchar(255) と varchar(256) の種類を見るのですが、
どっちが一般的ですか?
出典: mysqlの文字列型で varchar(255) と varchar(256) の種類を見るのですが、どっちが… – Yahoo!知恵袋

【A】

どちらが一般的というわけではありませんが、
varchar(255)は文字数を保持する領域が1バイトですみます。
varchar(256)だと2バイト必要になります。細かい話ですが。
出典: mysqlの文字列型で varchar(255) と varchar(256) の種類を見るのですが、どっちが… – Yahoo!知恵袋

diceの勝手な勘違い

ほほ~、

varchar(255)は 1バイト
varchar(256)は 2バイト

倍違うのかよッッッ!

それなら、
よほどのことが無い限り

varchar(255) 一択だな! (`・ω・´)キリッ


コレは大きな間違いであることを、
varchar型を少し突っ込んで勉強して気が付きましたんで、
diceは反省を込めて備忘録として記します・・・。

「varchar(255)」と「varchar(256)」の違い

255と256は総量が倍違うんじゃないんだ!

255と256は倍違うんじゃなく、
たった1バイトの違いで大した問題じゃないんだ!

前回の記事に書きました、

指定はバイト数を指定しますが、「=文字数」というわけにはいきません。
varchara型はchara型と違い文字だけでなく長さも記録します、
なので長さを記録する分 1バイト必要です。
出典: char型 VS varchar型 【MySQL超個人的備忘録シリーズ】 | 76bit Cafe

つまり総量が1バイトと2バイトの違いではなく、

varchar(255) とvarchar(256) の違い

varchar(255) とvarchar(256) の違いは、
文字数をカウントに要するバイト数が

varchar(255)は 1バイト要し、
varchar(256)は 2バイト要する。

よって、

varchar(255)は

文字数カウント:1バイト
文字列格納:255バイト
最大容量:256バイト

varchar(256)は

文字数カウント:2バイト
文字列格納:256バイト
最大容量:258バイト

つまり、
1バイト文字の違いで、プラス1バイト余計にかかるだけの話。

なので、
騒ぐほどの話ではないことですね。

結論

varchar(255) がベスト

大差は無いが・・・、
チリも積もれば、やはりチリではあるが
varchar(256) を使うなら varchar(255) がベスト。
varchar(65535) など最大限使う気ならうまみは出てくるけど、255でなんとかなるなら256にする必要は無い。

ちなみにバイトの分かれ目は

( nバイト=2の(8×n)乗 )

1バイトと2バイトの分かれ目:255→256
2バイトと3バイトの分かれ目:65,535→65,536

 

ノンプログラマに幸多かれ\(^o^)/
それでは~


コメント

Facebookコメント

※コメントしたけど表示されてない方へ

パーマリンクを変えてしまったおかげで表示されなくなってしまいました。
折角コメントいただいたのにスイマセンm(__)m
パーマリンク変更しても何とか表示できる方法を現在模索中です。

“Facebookコメント”じゃないコメントを残す

このコメント欄は一時的に且つ試験的に復活させ実装させています。スパムが増加すると廃止します。なのでできるだけFacebookのコメントでコメントをお願いします。m(__)m
なお、メールアドレスは公開されることはありません。

  1. Mooxx さんのコメント

    昔の一部のデータベース(Interbase等)には255までの制限がありました。
    CPUが8bitであれば大きな違いですが今は気にする必要ないと思います。

    • dice さんのコメント

      なるほど!8bitパソコン時代の名残ってことですかね。

コメントを残す