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) にインデックスを作成できませんコード> 列