2

グラフ化するデータが多いという問題があります。グラフは、最初は少数のポイントのみがプロットされるように設定されていますが、「ズームイン」して特定の日付範囲でより多くのポイントを取得できます(これは、JavaバックエンドへのAJAXリクエストを介して行われます)。

私は2つのアプローチを考えましたが、どちらがより効率的であるかについてのフィードバックが欲しいです。

  • 問題の日付範囲でリクエストごとに新しいSQLクエリを実行するか、
  • すべての日付範囲のすべてのレコードを、Javaフレームワーク内のORMクラスにプリロードします。これらを二分探索木に追加します。次に、ユーザーがリクエストを行ったら、バイナリ検索を実行するだけです。

データベースにはすでに何らかのツリーベースのインデックスが作成されていると思いますが、2番目のアプローチでは、繰り返されるdb呼び出しのオーバーヘッドを回避できます。助けてくれてありがとう!

4

1 に答える 1

2

確認するための最良の方法は、両方のソリューションのプロファイルを作成することですが、私の本能は、DBMSがこれを実行できるよりもはるかに高速に実行することです。DBMSは、このようなクエリを非常に高速に処理するように特別に設計されています。それらのオプティマイザは、Javaで実装するものよりもおそらく優れています。

これは、説明したようなクエリを処理するようにDBが適切に構成および最適化されていることを前提としています。繰り返されるDB呼び出しのコストは、DBMSのパフォーマンスを相殺するのに十分ではないと思います。

DMBSにこの検索を実行させると、自分で作成する必要のあるコードが最小限に抑えられるため、よりクリーンになります。

繰り返しになりますが、確実に知るための最良の方法は、ソリューションとプロファイルの両方をすばやくプロトタイプ化することです。

于 2012-08-23T19:26:19.793 に答える