MySQLのVARCHARサイズについて
varchar(...) にどんな数字をいれておくのがいいのか悩む。「これくらいの範囲の長さがくると想定しているならこの値にしておけ」みたいな指標はあるのかしら。十分かつ最小の2のn乗の値にしておく、とか? #mysql
2010-09-27 22:48:36255でも256でもパフォーマンス的に大きな違いはないと思うのだけど なんか「こういう理由でこっちを選ぶんだよ!」みたいのが欲しい。。
2010-09-27 22:55:41UTF-8で255か256かのところにオーバーフローページ利用有無の境目があります。 http://bit.ly/94z5BV RT @sugyan: 255でも256でもパフォーマンス的に大きな違いはないと思うのだけど なんか「こういう理由でこっちを選ぶんだよ!」みたいのが欲し
2010-09-27 22:57:38256と257の間かも>< RT @sh2nd: UTF-8で255か256かのところにオーバーフローページ利用有無の境目があります。 http://bit.ly/94z5BV RT @sugyan: 255でも256でもパフォーマンス的に大きな違いはないと思うのだけど...
2010-09-27 22:58:44そのへんにUNIQUE INDEXが作れるかどうかの境目もあります RT @sh2nd: 256と257の間かも>< RT @sh2nd: UTF-8で255か256かのところにオーバーフローページ利用有無の境目があります。 http://bit.ly/94z5BV RT...
2010-09-27 23:01:38@sugyan 複合インデックスを貼る時に長さが問題になる事があるので、少ない方が良い気がしますが。どうなんですかね。。。
2010-09-27 23:04:12@sugyan UTF8の256の長さとdatetimeカラムで複合ユニークにしようとしたらできませんでした
2010-09-27 23:05:47MySQL のデータ長って、ブロックサイズの等倍にすると良かったような。シーク回数とか分割時とか。ちょっといま手元に本がないけど(移動中
2010-09-27 23:09:47@sugyan 256よりは255のほうがいいです。varcharはlengthを最初に保存していて255は1バイトですが256だと2バイト必要になってしまうので。
2010-09-27 23:11:11@sugyan あ、mysqでlの話です。あと、sort buffer あたりの使い方のあたりでもバイト数が関係するとききました。なので、考え得る最大?で少ない方がいいのかな。と。
2010-09-27 23:13:16@sh2nd ありがとうございます! 768byte目までとそれ以降が違う扱いになる、ということですかね…? そうすると255にしておくべき理由にはなりそうですね。
2010-09-27 23:16:06@kamipo たしかに! そこの境目はありますね。ありがとうございます。 では100文字程度のものが入りそう、というときだとどういう値がいいですかね… 128とかでもなく、150とか200とかとっちゃうのがキリがいいでしょうか ><
2010-09-27 23:18:03そうです→「768byte目までとそれ以降が違う扱い」 RT @sugyan: @sh2nd ありがとうございます! 768byte目までとそれ以降が違う扱いになる、ということですかね…? そうすると255にしておくべき理由にはなりそうですね。
2010-09-27 23:22:22@haruta_makoto ありがとうございます。少ないにこしたことはない、とは分かっているのですが、最大サイズが正確にはわからない、という場合にどういう値にしておくのがちょうどいいのか、という疑問でした。255と256という例はよくなかったかもしれません ><
2010-09-27 23:24:08@sugyan 100文字程度のものが入りそう、ならとりあえず考えを保留する意味で僕は255にしておきますが、基本的には何文字まで許可するのか決めて、その値にすると思います!
2010-09-27 23:24:55255と256では諸処の理由から255にしておくべきだと納得しました。 僕が最初に思った疑問は「20〜50文字くらいだと思うけどもうちょっと長くなるかも。でも100文字にはならない」というくらいの微妙な想定のときにみなさんどうするんだろう?ということでした ><
2010-09-27 23:27:24自分は悩むの面倒なので、一律255、それ以上になりそうならtext型にしてます。でも根拠レスなので、有識者の見解が知りたい。ちなみにInnoDB。 RT: @sugyan: varchar(...) にどんな数字をいれておくのがいいのか悩む。 #mysql
2010-09-27 23:30:06@sugyan Twitterのタイムライン格納するとき、私はVARCHAR(140)で作りましたが @sakaik さんがVARCHAR(255)で作ってました。とりあえず悩んだら全部255にするという方針は一つあると思います
2010-09-27 23:36:07