1. ホーム
  2. sql

常にvarchar(MAX)が望ましいのでしょうか?

2023-09-07 03:43:14

質問

SQL Server について、私は理解しています。

  • var は、メモリが遅延割り当てされていることを意味し、(挿入時に)データに正確に適合していることを意味します。

  • MAX はサイズ制限がないことを意味します。

では、常に MAX を使うのが望ましいのでしょうか? varchar を使用する場合、全サイズを割り当てることはないのでしょうか?

この DB カラムに強制したい制約がある場合にのみ、一定のサイズを使用すべきでしょうか?

どのように解決するのですか?

このテーマについて、SOユーザーの@Remus Rusanuによる非常に良い記事があります。 以下はその抜粋ですが、全部読むことをお勧めします。

MAX型(varchar、nvarchar、およびvarbinary)を処理するコードパスは、MAX型とは異なります。 varbinary) を処理するコード パスは、それらと同等の最大長でない型を処理するコード パスとは異なります。 等価な非MAX長の型を扱うコードパスとは異なります。非MAX型は、内部的には 通常のポインタと長さの構造体として表現されます。しかし,max 型は,内部で連続したメモリ領域として格納することができません。 最大2Gbまで成長する可能性があるからです。そのため,COMのようなストリーミングインタフェースで表現する必要があります。 COM の IStream に似たストリーミングインタフェースで表現する必要があります。これは これは,単純な代入や比較を含む max 型を含むすべての操作に当てはまります. このことは,単純な代入や比較を含む max 型を含むすべての操作に当てはまります. というのも、これらの操作はストリーミング・インターフェースの上ではより複雑になるからです。最も大きな影響を与えるのは しかし、その影響はすべての操作に現れます。 影響はすべての操作で見ることができます。

記事の中で、彼は varchar(n) を使用すると一般的にパフォーマンスが向上することを実証するいくつかの例を示しています。

記事全体を見ることができます はこちら .