1

コードを使用するデータベースがあります。各コードの長さは、2文字から10文字までです。

MS SQL Serverでは、パフォーマンスchar(10)のためにこれらのコードを使用し、それらが入ってくるときにそれらをRTRIMする方が良いですか、それとも使用varchar(10)して余分な空白を削除することを心配する必要はありませんか?コードは比較のためにアプリケーションロジックで使用されるため、空白を取り除く必要があります。

平均的なコード長については、正確に言うのは難しいです。すべてのコードが1から10の間のランダムな長さであると想定します。編集:大まかな見積もりは、コードの平均の長さで約4.7文字です。

4

5 に答える 5

6

私はvarcharに投票します。

インデックスの使用を無効にするTRIMを回避するためにvarcharと言います(目的を損なう計算列などを使用しない限り)。

それ以外の場合、長さ10では50/50になりますが、TRIMはバランスをvarcharに向けて傾け、固定長の利点を上回ります。

于 2010-04-15T18:56:43.163 に答える
3

原則として、追加のCPUよりも小さいストレージを常に優先します。データベースパフォーマンスの推進要因は常にIOであり、データレコードが小さいほど、ページあたりのレコード数が多くなり、IO要求が少なくなるためです。可変長の処理に関係する余分なCPUは要因にはなりません。歴史的に、80年代の暗黒時代、そして90年代でさえ、それは測定可能な要因であったかもしれませんが、今日はただの騒音です。CPUとメモリへのアクセスが大幅に増加しましたが、IO速度はほぼ一定に保たれているためです。そのため、「古い本」のアドバイスは今日は適用されません。char(2)などの定数フィールドがない限り、常にvarcharを使用してください。

于 2010-04-15T20:17:01.223 に答える
2

速度の違いは分からないと思います。

于 2010-04-15T19:05:15.583 に答える
1

要件は、varcharを使用する必要がある人の教科書の定義です。

パフォーマンスについて心配したい場合は、DBの設計と優れたSQLの作成について心配してください。CharとVarCharの内部は、DBベンダーによって十分に最適化されています。

于 2010-04-15T19:02:40.937 に答える
0

ある古い本で、ほとんどのレコードで実際の文字列の長さが最大値の少なくとも60%である場合は、一般にcharの方が適していると読みました。あなたの例では、すべてのレコードの半分以上の長さが6以上の場合。それ以外の場合は、varcharを使用してください。

于 2010-04-15T19:02:16.197 に答える