私はデータベースをモデリングしていますが、Varchar型について質問したいと思います。Varchar型とパフォーマンスの問題
- Varchar(50)とVarchar(100)の間にパフォーマンスの違いはありますか?
たとえば、私はこのフィールドに5文字のデータを保存し、別のユーザーがこのフィールドに25文字を保存しました。しかし、誰もこのフィールドに50文字のデータを保存しませんでした。だから私は最大のパフォーマンスのためにこのフィールドvarchar(25)を有効にする必要がありますか?
私はデータベースをモデリングしていますが、Varchar型について質問したいと思います。Varchar型とパフォーマンスの問題
たとえば、私はこのフィールドに5文字のデータを保存し、別のユーザーがこのフィールドに25文字を保存しました。しかし、誰もこのフィールドに50文字のデータを保存しませんでした。だから私は最大のパフォーマンスのためにこのフィールドvarchar(25)を有効にする必要がありますか?
と仮定SQL Server
(あなたもMySQL
を記載されているので)、ありません。
オーバーヘッドであれば、フィールドのデータが同じであるものと同じです。 最も実装について
は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
いいえ、パフォーマンスの低下はありませんし、あなたは例を挙げるために最大10文字しか格納しません。 Varcharは常にデータを行に格納します。
EDIT:MySQLの場合:いいえ、少なくとも、あなたは50-100文字の間にいくつかの文字列を持っていない場合を除きます。
通常、varcharsはlength + dataとして格納されます。供給されたデータのみが記憶される。 varchar(100)は長さ(最大300バイト、utf8 3バイト/文字)を仮定すると、それ以上のバイトを必要としますが、十分ではありません。
インデックスについても同じです。それはあなたが実際に保管するだけです。
どうすればテストできますか?このイベントをテストするためのツールMSSQLまたはMySQLはありますか? –
列の長さは、ユーザーがその列に格納するデータの最大長を反映すべきです。あなたのアプリケーションが十分に研究された要件に基づいて設計されている場合は、その長さについての正当な理由があるはずです。その列に25文字以上の文字列を格納している人がいないため、まだという文字列は、いつかは表示されません。
質問の別の側面に答えるために、列の長さを短くすることによるパフォーマンスの向上はありません。ドキュメントにはこのように、列は割り当てられたデータに合わせてストレージを占有するだけです。そのため、25バイトのデータしか持たないVARCHAR(100)列は、同じデータを持つVARCHAR(25)列より多くのストレージを占有しません。 Find out more。
ストレージにパフォーマンスの問題はありますか。これは、ディスク上のレコードが短いほど、I/O操作ごとに取得されるレコードの数が増えるためです。
Martin Smithの答えをチェックしてください:http:// stackoverflow。com/questions/2009694/is-there-an-varchar500-over-varchar8000/5654947#5654947 – gbn