0

ISO 3166-2 コードを使用して、データベースで州 (米国だけでなく、多くの国の) を指定しています。Code私のテーブルの主キーであり、私のテーブルの外部キー列Statesによって参照されています。StateCodeCities

私が見る限り、標準には 5 つ ( のようなUS-CA) と 6 つの ( のようなRU-SPE) シンボル ロング コードがあります。

SQL Server の列をより適切に使用varchar(6)または入力する必要がありますか?char(6)

使用するデータベース サーバーは、SQL Server 2012 と Azure です。

データにアクセスするアプリケーションは、ASP.Net 4.5 MVC 4 および Entity Framework 5 に基づいています。

4

2 に答える 2

4

MSDNから(問題のページはSQL Server 2000用ですが、引き続き適用する必要があります):

  • 列のデータ値が一貫して同じサイズに近いと予想される場合は、charを使用します。
  • 列のデータ値のサイズが大幅に異なると予想される場合は、varcharを使用します。

推奨事項は、文字列の長さを格納するために余分なスペースを必要とするvarcharに基づいており、(おそらく)文字列をテーブルの残りの部分とは別に格納するため、フェッチが遅くなることに基づいていると思います。

お役に立てば幸いです。

于 2012-12-25T19:06:14.860 に答える
4

CHAR(6)何を入力しても、各エントリは常に6 バイトになります。

VARCHAR(6)5 文字で7 バイト(5+2 オーバーヘッド)、6 文字で8 バイトになります。

約 10 文字未満の任意の文字列。可変長型は常にエントリごとに2 バイトのオーバーヘッドCHARがあるため、通常は よりも型を選択します。VARCHARVARCHAR

したがって、この状況でほぼ 5 文字または 6 文字の文字列しかない場合は、CHAR(6).

VARCHARより長い文字列があり、その文字列内に実際に格納されているテキストの長さの変動が大きい場合にお勧めします。たとえばCHAR(256)、電子メール アドレスには使用しません。その場合はVARCHAR(256)、これらの列に格納されている電子メール アドレスの長さが重要であり、可変長文字列の 2 バイトのオーバーヘッドは実際には問題にならないため、使用します。文字列内の 256 文字と比較すると、それだけです。

于 2012-12-26T10:39:33.607 に答える