私はmysqlテーブルを使用しており、レポート作成のために1つのクエリで10百万以上のデータをフェッチしたいと考えています。hibernateを使用して何百万ものレコードテーブルをフェッチする最良の方法
テーブルには外部キーも含まれている可能性があります。私はデータをフェッチするために休止状態のクエリを使用しています。照会部分だけで20〜30秒ほどかかります。
これを最適化する方法はありますか? mysqlでテーブルのインデックスを作成すると助けになりますか?
私はmysqlテーブルを使用しており、レポート作成のために1つのクエリで10百万以上のデータをフェッチしたいと考えています。hibernateを使用して何百万ものレコードテーブルをフェッチする最良の方法
テーブルには外部キーも含まれている可能性があります。私はデータをフェッチするために休止状態のクエリを使用しています。照会部分だけで20〜30秒ほどかかります。
これを最適化する方法はありますか? mysqlでテーブルのインデックスを作成すると助けになりますか?
setFetchSizeを試しましたか? Hibernateはデフォルトでそのような大きなquiresのために最適化されていないので、setFetchSize(http://www.blogbyben.com/2007/07/hibernate-performance-tip-setfetchsize.html)で遊んでみてください
私はそのパフォーマンスを大幅に向上させていません – Jerry
"これを最適化する方法はありますか?"ええ、報告にHibernateを使わないでください。 – Kayaman
_ mysqlのテーブルを索引するのは助けになるでしょうか?_もちろん。索引なしでは、これは参照なしで検索する必要があります。しかし、どのようにインデックスなしで多くのデータを持つことができます... – AxelH
うーん、私はデータを転送するにはかなりの時間がかかると思うだろう。カウントを返すか、できるだけデータを小さくするだけで、クエリを確認してください。また、問合せでexplainを呼び出して、どこかで最適化できるかどうかを確認してください。これはすべてSQL側にありますが、Hibernateはエンティティを作成するためのオーバーヘッドを追加します。一方、エンティティのプロパティ/フィールドのみを選択し、エンティティ全体ではなく、Hibernateを回避するかどうか、つまりプレーンSQLを代わりに使用するかどうかをチェックします。 – Thomas