1

Java のパフォーマンスに関する質問があります。

SQLデータベースに大きなインデックス付きテーブルがあります(この場合はH2データベースですが、質問はどのSQLデータベースにも適用できます)。

このインデックスを使用して、このテーブル内のアイテムを頻繁に検索する必要があります。

今、何が速いのだろうか:

  • SQL データベースのクエリ
  • 最も頻繁に使用するフィールドの独自のハッシュマップを作成する

誰かがこれについて考えを持っていますか? (いくつかの速度テストを作成して自分で調べる前に)。

4

3 に答える 3

2

HashMap で検索する方が高速ですが、データが変更された場合、キャッシュするデータのビットを決定することは言うまでもなく、データの管理とキャッシュの更新のオーバーヘッドが発生します。

データベースはおそらく独自のキャッシュを実行し、一般的なクエリはおそらくクエリパーサーを介さずに非常に迅速にデータを返すことに注意してください。ディスクにアクセスすることは気にしないでください。

于 2011-01-12T14:58:26.537 に答える
1

独自の HashMap を使用して維持すると、生活が苦しくなる エントリが多すぎてメモリに格納できない場合 アプリケーションが再起動された場合はどうなるでしょうか? 思いもよらなかったパラメーターをもう 1 つ検索する必要がある場合はどうすればよいでしょうか。param1=val1 や param2=val2 のように検索する必要がある場合

DB は、適切なインデックスのセットを維持すれば、すぐに使用できるものを提供します。また、最近のほとんどの DB は、頻繁にクエリされるデータをキャッシュに保持するため、処理が高速になります。

于 2013-07-20T18:21:48.520 に答える
1

インデックス付き SQL クエリは 1 ~ 10 ミリ秒で実行でき、HashMap のルックアップは 1 マイクロ秒未満である必要があります。

既に SQL データベースがある場合は、メモリ内のデータをレプリケートする必要があることがわかっていない限り、それを使用します。

于 2011-01-12T14:58:32.850 に答える