2012-05-25 13 views
6

私は1回のクリックで検索する必要がある何千ものレコードを持っています。現在、私は結果を非常にゆっくりと与えています。私は長い間待たなければなりません。休止状態を使用してこれらの結果を取得する方法を改善する方法はありますか?JavaでHibernateのパフォーマンスを改善するには?

選択クエリを持つメソッドが1分ごとに実行されるケースがあります。これは、Hibernateが私に遅い結果を与えているところです。私はMySQLでHibernateを使用しています。

+2

「文字列の長さはどれくらいですか?」と少し似ています。あなたのHQLが何であるかについての詳細が必要です。ちょうど単純な "where"節が事態を劇的に速めることができます。 – david99world

+0

キャッシュを使用していますか? (hibernate.cache.user_query_cache = true) – stzoannos

+0

データベースからたくさんのデータを取得するのは遅いですが、Hibernateはそうではありません。一度に数百行を表示するなど、取得している行の数を減らしてください。あなたのユーザーは、とにかく10000行すべてを同時に見ることができないので、多くの情報を提示する必要はありません。 – dasblinkenlight

答えて

6

一般的な方法は、第二レベルのキャッシュとクエリキャッシュの有効化されると言う一度記録の一部を取得する必要がある場合、私はあなたがPaginationのために行くことをお勧め。あなたのデータはdbからではなくmemmoryから読み込まれます。

良い記事

hereそれについての他のものが参考になっ可能:

1インデックス - 場合と順序がある - あなたが/順序を検索しているフィールドのインデックスを構築する必要があります - これは改善することができます検索速度が10倍になる

2非正規化 - 結合が多い場合は、いくつかの非正規化(すべてを1つのテーブルに入れる)が役に立ちます。しかし、これは他のすべてが失敗したときに最終的な解決策になるはずです。

+0

大変ありがとうございます。 –

+0

選択クエリを持つメソッドが毎分実行されるケースがあります。これは、私に遅い結果を与える休止状態の場所です。 –

+0

第2レベルのキャッシュとクエリキャッシュを有効にすると、クエリーを最初に実行した後にエンティティが設定されます。だから最初の時間がかかることがあります。しかし、次にキャッシュされた値が使用されます。メモリからの読み込みは速くなります – alexey28

1

あなたがウェブページ上のレコードを表示し、100

関連する問題