ページング アルゴリズムは、Web 開発者が非常に懸念している問題です。ほとんどすべてのデータベース関連アプリケーションでこの分野に関するドキュメントが作成されており、議論することは何もないように思えます。データ表現を変更することで、より良いページング アルゴリズムを使用できるかどうかを見てみましょう。
まず、いくつかの既存のメソッドについて説明しましょう。
1 つは DataGrid によるページングです。この方法は最も単純ですが、効率的ではなく、必要なデータの前にあるすべてのデータを読み取る必要があります。
2 つ目は、開始レコードとレコード番号 DbDataAdapter.Fill を指定して DataSet のページング メソッドを埋める方法です。この方法も単純ですが、効率的ではなく、必要なデータの前にあるすべてのデータを読み取る必要があります。
3 番目は、複数の先頭選択と複数の並べ替えによってテーブルの中央から必要なレコードを選択することです。隣接するページのデータが繰り返されないようにするには、not in を使用する必要があります。これにより、末尾のデータが発生します。大量のデータを含むテーブルを選択すると、データベースのパフォーマンスが大幅に低下します。
従来の C/S アプリケーションにおけるスクロール バーを使用したグリッド表示を例として、テーブルの表示形式を変更するとします。実際、この方法はデータベース テーブルに最も適した表示方法であり、一般的に使用される表示方法です。 Web アプリケーション Web アプリケーションではスクロール バーを実装するには単純な技術を使用できないため、1、2、3... のページ番号接続方法、または前ページおよび次ページ ボタンのページ番号参照バー方法は最後の手段です。グリッド。
データベース内のすべてのテーブルには、テーブル内の異なるレコードを区別するための主キーがあります。ユーザー インターフェイスのグリッド内のデータにも論理的に主キーがあります。そうでない場合、ほとんどのアプリケーションでは設定がありません。読み取りデータの主キーを知ることは不可能です。たとえいくつかのアプリケーションが読み取りデータの主キーを知っているとしても、それがわかっている限り、実際にはそれをページングに適用しません。読み取ったデータの主キーを使用すると、非常に簡単にページングを実行できます。
ホームページのアルゴリズムは非常にシンプルです
テーブル名順からトップページサイズを選択 ※主キー順
スクロールバーのあるテーブルの場合、スクロールバーをドラッグしても、選択した位置までページ単位でスクロールできます。新しいページのアルゴリズムは
トップページのサイズを選択 * テーブル名から 主キー > 主キー 前のページの最後に記録された主キーによる順序
キャッシュを使用する場合、すべてのデータを 1 回ダウンロードするだけでよく、新しいデータは次のページにスクロールしたときにのみダウンロードされます。終わり。
このアルゴリズムでは、グリッド内のデータの主キーを把握し、その主キー データをページングに適用する必要があります。複数の主キーとソートされたテーブルの場合、アルゴリズムは同じですが、ステートメントはより複雑になります。ホーム ページから開始するだけでなく、最後のページから開始して前方にスクロールすることもできます。
このアルゴリズムのパフォーマンスには問題はありません。テーブルが大きくても、選択される位置のレコードは同じです。ホームページ、前ページ、次ページのページング選択方法を使用する方が適しています。最後のページであり、スクロール バーに適しています。指定されたページ番号のページネーションには適していません。
このアルゴリズムを使用したスクロール バーのあるグリッドについては、デモwww.BizStruct.cnを参照してください。
質問をするときは、まず 2 つの点を考慮してください。そうしないと、このアルゴリズムと当社のシステムを組み合わせる利点が理解できない可能性があります。
第一に、従来の C/S 申請フォームと Web 上のページングフォームではどちらが便利でしょうか?
まず、実装したスクロール バー付きのテーブルと、従来の C/S アプリケーションのテーブルとの違いについて説明します。
返信の説明:
「xxページにジャンプする」などの操作は実装できないとの回答もありました。
しかし考えてみましょう。C/S アプリケーション環境でこのページ ジャンプ方法を使用すると、誰もが間違いなく奇妙に感じるでしょう。
私たちが実装したスクロール バー付きのグリッドは、LAN 環境では以前の C/S アプリケーションとほぼ同じ速度であり、WAN 環境でも非常に高速です。
Web アプリケーションの「○○ページへのジャンプ操作」は、実際には最後の手段です。従来の C/S アプリケーションのグリッドが実装できるのであれば、なぜこれを使用する必要があるのでしょうか。