2011-10-29 9 views
1

データベースから100万レコードを取り出してJqGridで表示するサイトがあります。しかし、私がそれをすると、レコードを取得して表示するのに約45〜60分かかります。JqGridで100万レコードを表示

私はJSP、Hibernate、JPA、MySQLデータベースでJqGridを使用しています。

誰も私にこのことを伝える方法を教えてもらえますか?そのため、時間遅延が減少し、レコードがより高速にロードされます。事前

@UPDATE

おかげで私の代わりにXMLをJSONを使用してみましたし、時間は30分に短縮されました。

@UPDATE 2

をフロントエンドにデータを渡すために、データベースと残り14分からデータをフェッチするために16分を取っている。この30分後に、私は時間を短縮することが可能であったことにより、いくつかの方法がありますjqgridにデータをロードするために使用されます。

ウェイ1:私は私のクエリにORDER BY句を持っていた私はそれを取り出して、時間が5分に45〜60分から

ウェイ2に減少した:クエリ内の結合の数を削減/削除を。

ウェイ3:HibernateオブジェクトまたはJPAオブジェクトを直接使用する代わりに、結果セットでクエリ結果を直接取得し、その結果セットを使用してjsonオブジェクトを作成します。

1と3の方法を使用すると、200000レコードを1分32秒に読み込む時間が短縮されました。

答えて

2

通常、同時に何百万ものレコードを表示する必要はありません。それはやるのは難しいことであり、完全に実用的ではありません。必要なのは、ページネーションを実装することです。サーバー側のページ番号付け。あなたが現在画面に表示できるレコードだけを取得するようにします。一度に10-30件のレコードが合理的な量のように見えます。何百万ものレコードを取得するのを避けるために、データベースレベルでページネーションを実行し、それらのうちのごくわずかしか表示しないことが重要です。

+0

私はこれに同意します。しかし、私は... 45〜60分を追加したいと思ったのですか?それは狂ったように聞こえる。私は、どのくらいの時間がデータベースを待っているか、どれだけダウンロードを待っているか、どのくらいの解析をしているかを判断しようとします。あなたのデータベースがその時間の大部分を占めているなら、それを最適化する必要があるでしょう。 – dnuttle

+0

@dnuttle、ほとんどの時間がかかりますIMHOは、この膨大な量のデータをHTTPプロトコル経由でクライアントに転送しています。最も重要なのは、ブラウザ内に非常に多くの要素を持つDOMツリーを構築することです。おそらく、 –

+0

ロボットではないすべてのユーザーに100万行を表示することは間違いありません。 – dnuttle

関連する問題