私はすでに、少なくとも1,000,000
レコードを含む大規模な MS SQL Server データベース テーブルをページングする 2 つの非常に高速な方法を実装しましたが、どちらの方法の長所と短所を判断することもできませんでした。どちらかについてアドバイスをいただければ幸いです。
1 つ目は、SQL クエリを実行し、フィルタリングされたレコードの主キー値のみを返すことです。おそらく 100 ~ 1000 の TOP 句を指定します。次に、これらを Web サーバー上のセッション変数に配置し、それに応じて、主キー値のサブセットをサーバーに返すことでページを移動できます。
これの良い点の 1 つは、ユーザーが最初に検索を実行したときに 1 回だけレコードのフィルタリングが行われることです。次に、次のレコードのプレビューなど、必要に応じてレコード セット全体を一度に 1 項目ずつページングできることです。この方法は、すでにフィルタリングされたレコードをさらにフィルタリングすることに関して、いくつかの利点も提供します。これは、共通の属性、役職、取締役など、主キー値のリストを SQL Server に戻すことでフィルタリング可能なオプションを決定できるためです。
2 番目のオプションは、「ページあたりのレコード数」や「ページ番号」などの変数を指定して、SQL Server 経由でフィルタリングとページングの両方を実行することです。
これの利点は、サイズが間違いなく少なくとも 1000 バイト以上になるユーザーセッションで Web サーバーを詰まらせる必要がないことです。これは、Web サイトユーザーの数が増加するにつれて、長期的にのみ問題を引き起こします。対照的に、マイナス面は、最終的に最初のオプションのプラスとしてリストしたものです。たとえば、単一ページまたは主キー値のサブセットのみを持つレコードセット全体のフィルタリングオプションを決定する機能の欠如などです。 Web サーバー上で動作します。
特に結果の主キー値をセッション変数、メモリ、代替オプションなどに保存することに関して、上記を考慮して、みんなの考えは何ですか?