私は次のようなものを読み続けています:
行内テキスト オプションは、SQL Server の将来のバージョンで削除される予定です。新しい開発作業でこのオプションを使用することは避け、現在行内のテキストを使用しているアプリケーションを変更することを計画してください。varchar(max)、nvarchar(max)、または varbinary(max) データ型を使用して大きなデータを格納することをお勧めします。これらのデータ型の行内および行外の動作を制御するには、大きな値の型の行外オプションを使用します。
では、行を 16 文字に制限したい varchar(max) フィールドがある場合はどうすればよいでしょうか?
ありがとう!
編集。 「行内」とは、VARCHAR/TEXT 文字列がポインターとしてではなく、データ行に直接格納されることを意味します (文字列データは別の場所に格納されます)。行からデータを移動すると、テーブル スキャンのパフォーマンスが向上します。行から移動されたデータは、「where」句の一部ではありません。
編集。 私が引用したテキストは、次のように述べています。
これらのデータ型の行内および行外の動作を制御するには、大きな値の型の行外オプションを使用します。
案の定:
https://msdn.microsoft.com/en-us/library/ms173530.aspx
しかし、そのページには次のように書かれています。
行内テキスト機能は、SQL Server の将来のバージョンで削除される予定です。大きな値のデータを格納するには、varchar(max)、nvarchar(max)、および varbinary(max) データ型を使用することをお勧めします。
したがって、疑問は残ります。
編集。 このテーブル オプションを使用する機能がまだあるようです。
大きな値の型が行から外れています。値 1 は、テーブル内の varbinary(max)、xml、および大きなユーザー定義型 (UDT) の列が行の外に格納され、ルートへの 16 バイトのポインターがあることを意味します。値 0 は、varchar(max)、nvarchar(max)、varbinary(max)、xml、および大きな UDT 値が、8000 バイトの制限まで、値が記録。値がレコードに収まらない場合、ポインターは行内に保管され、残りは LOB 記憶域の行外に保管されます。0 がデフォルトです。
ただし、データが小さい場合、データを行に保持するオプションが失われているようです。オールインかオールアウトになります。これを行う他の方法はありますか?