1

レコード数が2000を超えているため、データベースからのデータの取得に時間がかかるプロジェクトで働いています。JPQLを使用してデータベースにクエリを実行し、JQGRIDに表示しています。

誰かがデータベースから大量のデータをクエリする方法を提案またはガイドしてくれますか?

必要な追加情報を提供させていただきます

また、すでに解決策がある場合は私を案内してください...。

ありがとうございました ....

4

3 に答える 3

2

最初に行う必要があるのは、クエリのプロファイルを作成して、時間が費やされている場所を確認することです。45は、2,000レコードを読み取るのに非常に長い時間のようです。シンプルなデスクトップでは、1秒未満で10,000を超えるシンプルなオブジェクトを読み取ることができます。オブジェクトは非常に複雑ですか?

開始としてロギングを有効にすることをお勧めします。関係のフェッチに時間が費やされている可能性があります(n + 1の問題)。

EclipseLinkを使用している場合は、PerformanceMonitorを有効にすると、時間を費やしている場所のプロファイルダンプを取得できます。JProfilerなどのJavaプロファイラーを使用することもできます。

http://java-persistence-performance.blogspot.com/2011/06/how-to-improve-jpa-performance-by-1825.htmlも参照してください。

于 2012-08-09T13:06:15.903 に答える
1

問題を解決する方法を正しく説明する前に、問題が発生している場所を絞り込む必要があります。結果セットを生成しているクエリを取得し、SSMSを使用してデータベースに対して直接実行し、純粋なクエリの実行にかかる時間を確認します。実行速度が非常に速い場合、問題はUIにあります。それが実際のデータベースサーバーのパフォーマンス自体にある場合は、クエリの調整と最適化、および場合によってはインデックスを確認する必要があります。

以下のような後者の主題に関して利用可能な多くの記事があります:

http://www.sql-server-performance.com/2004/query-tuning/

于 2012-08-09T13:18:06.990 に答える
0

ページ付けを使用する必要があります。いくつかの例については、 jqGridのドキュメントを参照してください(MySqlを使用したPHPですが、SQL ServerおよびJPQLに適合させるのはそれほど難しくありません)。

于 2012-08-09T09:45:22.843 に答える