2

私はページネーションについて少し研究しました、そして私が読んだことからそれをすることの2つの矛盾した解決策があります

  1. ユーザーが次をクリックするたびにデータベースからデータの小さなセットをロードします問題-WHERE条件を満たす100万行があるとします。つまり、100万行が取得、保存、ファイルソートされた後、それらのほとんどが破棄され、20行のみが取得されます。ユーザーが[次へ]ボタンをクリックすると、同じプロセスが再度発生し、異なる20のみが取得されます。(参照-http ://www.mysqlperformanceblog.com/2008/09/24/four-ways-to-optimize-paginated -displays /

  2. データベースからすべてのデータをロードしてキャッシュします...これにもここで言及されている問題はほとんどありません-http ://www.javalobby.org/java/forums/t63849.html

だから私は両方のハイブリッドを使用する必要があることを知っています..しかし、質問は要約すると-どちらの操作がより高価です-データベースでデータの小さなチャンクに対して繰り返しクエリを実行するか、ネットワークを介して大きな結果セットを転送します

4

1 に答える 1

0

私の会社はまさにこの状況にあり、少しハイブリッドを選択しました。データは表形式なので、 AJAX経由でデータ テーブルに送信します。 これにより、適切な UI の書式設定、並べ替え、フィルター処理、および列の表示/非表示が可能になります。Datatables には、「パイプライン化」と呼ばれる「先にキューイング」する優れたソリューションがあります。これは、ユーザーのアクションの前に大量のデータを取得し (私たちの場合、要求されたレコードの最大 5 倍)、それがなくなるまで要求なしでページスルーします。データの。Datatables を使用して実装するのは非常に簡単ですが、jQuery の AJAX 機能を使用して手動で作成する必要がある場合、同様のソリューションは難しくないと思います。

150 万件のレコード データベースでフル ロードとキャッシュを実行しようとしましたが、大惨事でした。クライアントは、とても遅いことに腹を立てたので、ほとんど私を捨てました。一晩中 AJAX の良さを実感した後、クライアントは再び満足しました。しかし、その点に到達しないことが最善です。

幸運を。

于 2010-10-15T23:04:12.700 に答える