• 締切済み

text型とchar型をどちらを選ぶか?

SQLserver2000でのテーブル定義について質問です。 あるテーブルの中で、最長4000文字を格納するデータ項目があります。 現在、データ型はtextにしているのですが、一般論として、これはcharにした方が良いのでしょうか? また、SQLserverのデータ格納単位(1ページ)が8KBという点は、textかcharのどちらが望ましいかに影響するのでしょうか?

みんなの回答

回答No.4

>1ページ8KBをほぼ占有 あ。そうだ。1レコードあたりの最大がそれだけでしたね。 …ということはvarcharだと厳しいかもしれませんね…。 textはその枠とは関係ないので、そのほうがいいのかも。 特に検索対象にしないのであればリスクもないわけですし…。

3zservice
質問者

お礼

ご回答ありがとうございます。 やはり1レコードサイズは気にすべきなんですかね。 このあたりの点にお詳しい方がいらっしゃいましたら、アドバイス・ご意見お願い致します。

回答No.3

テキスト型だと、その列をWhere条件として指定することは出来ない記憶があるんですが…。 あと、nvarcharだと、全角半角に関係なく文字数がサイズになるので、 管理がしやすいのと、UNICODEなので、多言語対応が楽?というのが有利かも…。

3zservice
質問者

お礼

ご回答ありがとうございます。なるほど。 気になるのは、4000文字のnvarcharとした場合、データがフルで格納されると1ページ8KBをほぼ占有となる点です。 これはあまり気にしなくて良いのでしょうか? ご存知の方ご返答お願い致します。

回答No.2

私なら varchar じゃなく nvarchar を使いますね。

3zservice
質問者

お礼

ご回答有難うございます。 ntextではなくnvarcharを選択される理由をお教え頂けますでしょうか? 宜しくお願いします。

回答No.1

Char型で長さ4000だと長さ100の値を入れたときに、値の後ろに3900個の空白が自動で入ってしまいませんか。 Char型は固定長だったと思いますが。Oracleではそうです。

3zservice
質問者

お礼

回答ありがとうございます。 > Char型は固定長だったと思いますが。 総称的にcharと書いてしまいました。すいません。 正確にはtextかvarcharかの選択肢になろうかと思いますので、改めてどなかたご回答お願い致します。

関連するQ&A