0

SQLデータベースのデータにアクセスするJavaで記述されたアプリケーションがあります。いくつかの特定のシナリオでは、データベースに情報を照会する機能があります。または、スコープ内のオブジェクトに基づいて必要なデータを取得するためにJavaでコードを記述できます。私の質問はこれです。可能な場合はクエリを使用するか、Javaコードを記述して必要なものを実現する方が効率的ですか。たぶん、特定のシナリオが役立つでしょう。

リストを取得するためにデータベースにクエリを実行するシナリオがあります。その後、リストから特定のオブジェクトの1つだけを選択するJAVAコードを記述します。このシナリオでは、Javaを使用して必要なオブジェクトを確立しました。

別の方法は、データベースにクエリを実行し、クエリで2つのテーブルを結合して、必要な1つのオブジェクトのみを返すことです。このシナリオでは、クエリ言語を使用して、必要なオブジェクトを確立します。

ヒントやアドバイスをいただければ幸いです。

4

4 に答える 4

3

このように考えてください。SQL queries are much closer to dataJavaコードより。また、Javaはフィルタリングを実行するためにすべてのデータをロードする必要があります。効率的なSQLを記述できれば、SQLは常にJavaよりも優れています。

多くの計算とビジネスロジックが関係するシナリオでは、Javaフィルタリングが適しています。私は個人的に、データベースと比較して、Javaで複雑なビジネスロジックを書くことを好みます。

于 2012-10-19T17:35:39.763 に答える
1

データベースはこの点で設計されているため、データベースのクエリは高速です。また、Javaコードで必要な情報のみを取得するため、他の使用できないオブジェクトのために余分なメモリは必要ありません。

于 2012-10-19T17:35:35.113 に答える
1

通常、データベースは、Javaを使用してリストをフィルタリングするよりも高速にクエリを処理します。アプリケーションコードを使用する唯一の良いタイミングは、フィルタリング要件が非常に複雑でクエリ言語で表現できない場合(ほとんどあり得ない)、または必要なものを取得するためにデータベースに何度もクエリを実行する必要がある場合です。

これらは両方とも、座ってインテリジェントクエリの設計に集中することで修正でき、データベースが勝ちます。

于 2012-10-19T17:35:49.013 に答える
1

あなたの質問はいくつかの気まぐれな質問なので、具体的にするのは難しいです。

一般に、最適化が早すぎるのは道のりではありません。最も簡単な方法でコーディングするのが最善の方法であり、その結果得られた情報を使用して、どのような改善が必要かを判断します。

架空の#1

SQLクエリから得られるリストは膨大です。この場合、SQLを使用して結果を制限することをお勧めします。

架空の#2

結果のリストは小さいです。おそらく、どちらの方法でもパフォーマンスにはあまり影響しませんが、事後にJavaを使用してリストを操作すると、コードがより複雑になります。

架空の#3

上記のシナリオのいずれかですが、基になるデータはあまり頻繁に変更されないか、頻繁に要求されます。データをキャッシュし、Javaでコピーを作成し、それらのコピーを操作して並べ替え、フィルタリングなどを行うことができます。状況によっては高速になる場合がありますが、コードがより複雑になります。

架空の#4

結果のリストはそれほど大きくはありませんが、複雑でパフォーマンスの遅いクエリの結果です。おそらく結果をキャッシュし、データのバリアント(フィルタリングまたはソート済み)が必要な場合は、Javaを使用してキャッシュされたリストをコピーし、リストのコピーをソートおよび/またはフィルタリングします。または、データベースにマテリアライズドビューを作成し、代わりにクエリを実行します。

于 2012-10-19T17:43:02.417 に答える