1

DBにクエリを実行し、ブラウザにテーブルを表示するJavaサーブレットがあります。ユーザーがテーブルをスクロールしたときにのみ新しいリクエストが行われるように、ページネーションを実装しました。問題は、ユーザーがUIでテーブルを列に基づいて並べ替えることを選択した場合、DBの実際のテーブルが非常に大きく、テーブル全体を並べ替えてから、並べ替えられたページデータをクライアント/ブラウザに送信するため、リクエストに時間がかかることです。 。したがって、テーブルに100k行があり、ページサイズが100行である場合、DBまたはサーブレットのページ化で10万行全体を並べ替える必要がないように、並べ替えを微調整する方法があるとします。

4

1 に答える 1

1

ページネーションが役立つ場合があります。それで、これが通常どのように行われるかです。単一のページスクロールがある場合とは異なり、Webページをロードするページごとの古いページ付けページ。通常、並べ替え列を一覧表示するドロップダウンがあります。

最初に最初のページをロードします。ページの下部が表示されたらすぐに、AJAXを介して次のページのクエリをリクエストします。ここまでは大丈夫だと思います。

ユーザーが10ページの深さでスクロールしてから並べ替えた場合、一度に10ページのデータをロードする必要があるというのは厄介なことのようです。これは間違っています。

2つのこと、

  1. 並べ替え条件を変更すると、テーブルを表示していたコンテキストが変更されます。
  2. 10ページをロードし、ユーザーを10ページに維持するとします。彼は何が起こったのか驚かれることでしょう。

したがって、ユーザーが並べ替え条件を変更するとすぐに、DIVをクリーンアップし、新しい基準でページ1をロードします。今は負担がないようです。あなたは?


クイックヒントのカップル:

  1. 個人的には、DBMSを残してソートとページ付けを行う方が良いと思います。そうするために作られたと思います。最適化されたクエリを作成する必要があります。

  2. 並べ替える列にインデックスを付けると、いくつかの助けになります。

  3. アイテムが頻繁に変更されない場合は、適切なTTLを使用してページ(DBからの結果)をキャッシュすることをお勧めします。

  4. DBMSを活用して、クエリを最適化するための特別な機能を提供しました。これがMySQLの記事です

于 2012-10-30T15:17:25.450 に答える