VARCHAR(MAX)
を使用する 基本的に、SQL Server に「このフィールドの値を最適な方法で格納する」ように指示している場合、SQL Server は値を通常の VARCHAR
として格納するかどうかを選択します。 またはLOB(ラージオブジェクト)として。 一般に、格納された値が 8,000 バイト未満の場合、SQL Server は値を通常の VARCHAR
として扱います。 入力してください。
格納された値が大きすぎる場合、他の LOB タイプ (text
、 ntext
と 画像
) - これが発生した場合、追加のページに格納されたデータを読み取るために追加のページ読み取りが必要になります (つまり、パフォーマンスが大幅に低下します)。ただし、これは、格納された値が大きすぎる場合にのみ発生します .
実際、SQL Server 2008 以降では、固定長のデータ型 (例:VARCHAR(3,000)
) でも、データが追加のページにオーバーフローする可能性があります。 )、ただし、これらのページは行オーバーフロー データ ページと呼ばれ、扱いが少し異なります。
短いバージョン: ストレージの観点からは、VARCHAR(MAX)
を使用することのデメリットはありません VARCHAR(N)
以上 いくつかの N
について .
(これは、他の可変長フィールド タイプ NVARCHAR
にも適用されることに注意してください。 および VARBINARY
)
参考までに - VARCHAR(MAX) にインデックスを作成できませんコード> 列