テキストで100文字くらい入りそうな項目の型を
TEXT型にする場合と、char(200)にする場合と、char(1000)にする場合で、サーバの負荷や処理速度の違いは多少あるのでしょうか?
設計の時点で絶対にオーバーしないけど、大きすぎないくらいのバイト数で設計しておくのがベストなのでしょうか?その場合、例として挙げたものはどのくらいにしておくべきでしょうか?
データベース・データの特性によるので最適値は
ないと思います。
例えば100文字としても英語? 日本語? 多国後?
DB内部がunicodeとしてもUCS-2/UCS-4/UTF-8,16等
特性があります。
又検索条件のキーになる場合、データベース索引の
容量も影響します。
>大きすぎないくらいのバイト数で設計しておくのが
>ベストなのでしょうか
データ件数が多い場合はそうです。
可変で処理する場合大抵のDBは
charは固定のデータ領域確保
varcharは可変でデータ確保
DBの特性によりますが検索した少し古いですが
DB2のデータベース物理設計のガイドがありました。
http://www-06.ibm.com/jp/software/data/db2univ/data/v8dg_physica...
char 型だと固定長なので、1文字入れるだけでも確保した全領域を使用し、容量効率が悪いです。
そのため一般には varchar(varchar2)かtext 等の可変長を使う事が多いですが、以下のように性能的なメリットが見出せる場合もあります。
http://dev.mysql.com/doc/refman/4.1/ja/static-format.html
静的(固定長)テーブルの特性 中略 この形式は最も単純かつ最も安全です。また、ディスク上の形式としては最も高速です。速度が速いのは、ディスク上で簡単にデータを検出できるためです。検索の対象がインデックスと静的形式を使用している場合、操作はきわめて単純です。単にレコードの番号にレコードの長さを掛けるだけです。
自分は細かい調整が面倒なので、よほどのレコード数が見込まれている場合以外は TEXT 型にしてしまう事が多いです。
ありがとうございます。
よほどのレコード数が見込まれる場合は、絶対にオーバーしないけど、大きすぎないくらいのバイト数で設計しておくのでしょうか?
よほどのレコード数が見込まれる場合は、絶対にオーバーしないけど、大きすぎないくらいのバイト数で設計しておくのでしょうか?
DBと用件定義にもよりますが、基本そんな感じです。
ただ、varchar/varchar2 等の可変長を使う事が前提ですが。
なるほど。
varchar/varchar2で設計します。
ありがとうございました。
ありがとうございます。
資料を見てみます。