押忍! 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^)/
それでは~
昔の一部のデータベース(Interbase等)には255までの制限がありました。
CPUが8bitであれば大きな違いですが今は気にする必要ないと思います。
なるほど!8bitパソコン時代の名残ってことですかね。