2011-10-10 8 views
1

私はデータベースをモデリングしていますが、Varchar型について質問したいと思います。Varchar型とパフォーマンスの問題

  1. Varchar(50)とVarchar(100)の間にパフォーマンスの違いはありますか?

たとえば、私はこのフィールドに5文字のデータを保存し、別のユーザーがこのフィールドに25文字を保存しました。しかし、誰もこのフィールドに50文字のデータを保存しませんでした。だから私は最大のパフォーマンスのためにこのフィールドvarchar(25)を有効にする必要がありますか?

答えて

1

と仮定SQL Server(あなたもMySQLを記載されているので)、ありません。

オーバーヘッドであれば、フィールドのデータが同じであるものと同じです。 最も実装について

+1

Martin Smithの答えをチェックしてください:http:// stackoverflow。com/questions/2009694/is-there-an-varchar500-over-varchar8000/5654947#5654947 – gbn

0

VARCHAR(50)VARCHAR(25)取るに足らない性能差があってもよいです。おそらく心配する価値はない。経験則として

、あなたはあなたが使用したいと思うだろうとして、フィールドが同じ大きさにします。ここで

は、いくつかの関連する議論である。その議論から
What are the optimum varchar sizes for MySQL?

、ここでは関係MySQLのマニュアルページがある:あなたがVARCHAR(50)を定義した場合
http://dev.mysql.com/doc/refman/5.0/en/char.html

0

いいえ、パフォーマンスの低下はありませんし、あなたは例を挙げるために最大10文字しか格納しません。 Varcharは常にデータを行に格納します。

0

EDIT:MySQLの場合:いいえ、少なくとも、あなたは50-100文字の間にいくつかの文字列を持っていない場合を除きます。

通常、varcharsはlength + dataとして格納されます。供給されたデータのみが記憶される。 varchar(100)は長さ(最大300バイト、utf8 3バイト/文字)を仮定すると、それ以上のバイトを必要としますが、十分ではありません。

インデックスについても同じです。それはあなたが実際に保管するだけです。

+0

どうすればテストできますか?このイベントをテストするためのツールMSSQLまたはMySQLはありますか? –

0

列の長さは、ユーザーがその列に格納するデータの最大長を反映すべきです。あなたのアプリケーションが十分に研究された要件に基づいて設計されている場合は、その長さについての正当な理由があるはずです。その列に25文字以上の文字列を格納している人がいないため、まだという文字列は、いつかは表示されません。

質問の別の側面に答えるために、列の長さを短くすることによるパフォーマンスの向上はありません。ドキュメントにはこのように、列は割り当てられたデータに合わせてストレージを占有するだけです。そのため、25バイトのデータしか持たないVARCHAR(100)列は、同じデータを持つVARCHAR(25)列より多くのストレージを占有しません。 Find out more


ストレージにパフォーマンスの問題はありますか。これは、ディスク上のレコードが短いほど、I/O操作ごとに取得されるレコードの数が増えるためです。

関連する問題