QA@IT

SQL SERVERの文字列型の最適な設定

3713 PV

SQL SERVERにて文字列型のパフォーマンスを考慮した上で、
最適な設定をご教示下さい。

店番のカラムがあり、現在、varchar(32)で設定されています。
しかし、実際に登録されているデータの全て7桁になります。

SqlComandのParameterのAddの際には、サイズ指定を7で行っています

このような場合、以下のような対応を行った方が改善しますでしょうか

①常に7バイトなので、varcharを使用せずにcharを使用

②varchar(7)に変更

以上、よろしくお願いします

  • 文字列のパフォーマンスとは具体的になんでしょうか?SqlCommandなどが書かれているという事はADO.NETのパフォーマンスの事ですか? -

回答

実際に登録されているデータも、これから登録されるデータも全て7桁であれば、
char(7)にするべきでしょう。

誰かが後にテーブル定義を見たとき、どう思って欲しいでしょう。
開発の場合で、定義を見た人の思考の一例を挙げます。
※NOT NULL前提
・varchar(32)
 最大32バイトの可変長文字列かぁ。
 表示させるテキストボックスは32バイト分用意しなくちゃ。
 エラーチェックは必須チェックと32文字以下かどうかのチェックね。
・varchar(7)
 (上の32を7に置き換える)
・char(7)
 7バイト以外あり得ない。
 エラーチェックは「7バイト以外は全てエラー」でOKだ。

チームでの開発であれ、個人の開発であれ、
他の誰が見ても、10年後に自分が見ても分かりやすいのは
char(7)です。
※但し、「8バイトに変更して」というような仕様変更には対応しづらいですが

すなわち開発効率が「ハイパフォーマンス」ということです。

編集 履歴 (0)

固定長ならcharがいいと思います。まあ自分がそうしているというだけなんですけどね……。varcharって確か文字列の長さ?か何か格納するために2バイトくらい取ってませんでしたっけ。7バイトで固定されてるなら、それがないcharのほうがいいんじゃないかなって思います。すみません、あまり自信ないので間違ってたら指摘をお願いします。

編集 履歴 (1)
ウォッチ

この質問への回答やコメントをメールでお知らせします。