1

データベースからの結果セットを「ページング可能」にする際の原則または実装は何ですか?

メモリに保存せずに 100 万件を超えるレコードをページングするにはどうすればよいでしょうか? 100 ページあるときに 5 から 50 番目のページ番号に「ジャンプ」できるのは何ですか?

ページングがどのように行われるかについて、疑似コードのような説明を探しています。

4

2 に答える 2

2

通常、[次へ] ボタンの URL には、ページをレンダリングするデータベース クエリを変更する何かがあります。次に、そのレンダリングされたページは、次の URL でインデックスをバンプします。

したがって、ページ 1 は LIMIT 20 を持つ SQL 要求である可能性があり、ページ 2 も LIMIT 20 だけでなく OFFSET 20 も持つ可能性があります。

そのため、基本的にそのモデルでは一度に 20 個のアイテムのみが読み込まれますが、ページはオフセットされたアイテムの数も読み込み、「次のページ」の URL を変更します。

通常、ページが次のリンクを表示する必要があるかどうかを判断できるように、アイテムの総数に対して相対的な位置を確認する機能もあります。

于 2012-08-03T04:54:35.333 に答える
1

基本的な前提は、次のことを覚えておくことです。

  1. ページ サイズ、つまりページあたりのレコード数を定義します ( PAGE_SIZE)
  2. セット内のレコードの総数を把握します。次に、ページ数を計算できます。var numPages = totalNumRecords / PAGE_SIZE;
  3. 変数を使用してページ番号を追跡します。Page = 1
  4. 以下に示す単純な Skip/Take アルゴリズムを実行すると、ページングに必要な要素が得られます。

Skip((page - 1)*PAGE_SIZE).Take(PAGE_SIZE);

結果のデータ ソースにアクセスすると、必要なレコードのセットにスキップして、所定の量を取得します。うまくいけば、これは理にかなっています。

于 2012-08-03T04:59:40.570 に答える