質問

以前の会社の1つでは、テキストタイプの列に長い説明を保存する別のテーブルを使用していました。これは、テキストタイプに伴う制限のために行われたと思います。

今、私が取り組んでいる既存のアプリケーションのテーブルを設計していますが、この質問が思い浮かびます。 varchar(max)列の同じアイテムテーブルにアイテムの長い説明を保存することに共鳴しています。この列にインデックスを付けることはできませんが、これらの列で検索を実行しないので問題ありません。

これまでのところ、この列を別のテーブルに分離する理由はわかりません。

何か不足している場合や、varchar(max)の同じテーブルに説明を保存するのが良い方法である場合、入力をお願いします。ありがとう!

役に立ちましたか?

解決

テーブル内のフィールドを保持します。 SQL Server 2005以降、エンジンは大きなデータ型、さらには可変長の短いデータ型に関してもはるかにスマートになりました。古いTEXT、NTEXTおよびIMAGEタイプは非推奨です。 MAXの長さを持つ新しいタイプは、代替品です。 SQL 2005では、各パーティションには3つのタイプの基礎となる割り当てユニットがあります。1つは行用、もう1つはLOB用、もう1つは行オーバーフロー用です。 MAXタイプはLOBアロケーションユニットに格納されるため、実際には、エンジンは大きなオブジェクトを格納するための個別のテーブルを管理します。行オーバーフローユニットは、更新後にページに収まらない行内の可変長データ用であるため、別のユニットに「オーバーフロー」します。

テーブルとインデックスの構成を参照してください。

他のヒント

それらを使用する頻度によって異なりますが、はい、別のテーブルに配置することもできます。決定を下す前に、SQLファイルのページング、ページ分割、および「方法」の詳細を確認してください。 sqlはデータを保存します。

簡単な答えは、varcharmax()は間違いなくパフォーマンスの低下を引き起こす可能性があるということです。これらのフィールド長は、高価な操作であるページ分割の増加により大きく変化します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top