私のアプリケーションには、非常に幅が広く、高さが非常に高い複数のテーブルがあります。幅は、さまざまなデータ型 varchar/nvarchar および char/bigint/int/decimal を持つ 10 ~ 20 列から得られる場合があります。私の理解では、SQL のデフォルトのページ サイズは 8k ですが、手動で変更できます。また、その varchar/nvarchar 列はこの制限の対象外であり、多くの場合 (常に?) Row_Overflow と呼ばれるプロセスで別の場所に移動されます。それでも、MS のドキュメントには、Row-Overflowed データがパフォーマンスを低下させると記載されています。「行オーバーフロー データを含む大きなレコードに対して、並べ替えや結合などの他の選択操作をクエリして実行すると、これらのレコードが非同期ではなく同期的に処理されるため、処理時間が遅くなります。」
彼らは、大きな列を結合可能なメタデータ テーブルに移動することを推奨しています。「これは、非同期JOIN操作で照会できます」.
私の質問は、幅の広い列に対応するためにページ サイズを拡大する価値はありますか? また、他にパフォーマンスの問題が発生する可能性はありますか? それを行わず、代わりにテーブルを 1 つ以上のメタデータ テーブルに分割し、テーブルが 100MM レコード範囲のように "大きく" なった場合、分割されたテーブルを結合することは利点をはるかに上回りませんか? また、SQL Server がシングル コア マシン (または SQL Azure) にある場合、私の理解では、並列処理が無効になっているため、結合が非同期ではなくなることを考えると、テーブル イントロ パーティションを移動する利点もなくなりますか? 他にお勧めの戦略はありますか?
編集:以下の素晴らしいコメントといくつかの追加の読書 (私が最初に行うべきだった) によると、SQL Server のページ サイズを手動で変更することはできません。また、関連する SO 投稿: SQL Server のページ サイズを変更するにはどうすればよいですか? . @remus-rusanu からの追加の素晴らしい回答