おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

varcharの最大長を必要な分だけ設定する意味

mysqlのデータ型の一つvarcharは可変長の文字列を格納します。なので、最大長をいくつに設定してもハードディスク的に必要な容量は同じです。

例えば'hello'という文字列を格納するとしたら

  • varchar(5)
  • varchar(200)

のどっちの定義でも必要なのは5文字分の容量(と文字数を格納する容量)です。ではわざわざ最大長を考えて設定する意味はあるのでしょうか?いつでもvarchar(255)にしておけば問題ないのでは?と疑問に思ったので調べてみました。

やっぱり最大長は必要な分だけ確保すべき

最大長が大きいと、mysql内部で値を保持するときのメモリ容量が大きくなる可能性があるらしいです。なので最大長を必要なだけ小さく設定することに意味はあるようです。

追記

MySQLInnoDBでは、最大長の長さを保存していて255では1バイトだけど256では2バイトになるそうです。というわけでvarchar(5)とvarchar(200)の違いは特にないみたい?

Togetter - 「MySQLのVARCHARサイズについて」

参考

実践ハイパフォーマンスMySQL 第2版
Baron Schwartz Peter Zaitsev Vadim Tkachenko Jeremy D. Zawodny Arjen Lentz Derek J. Balling
オライリージャパン
売り上げランキング: 5225
おすすめ度の平均: 5.0
5 類似書は全部不要、究極の解説書