以前はほとんど空だったデータベース テーブルに多くの行を入れています。次に、そのテーブルのデータに基づいてレポートを作成しています。テーブルにはインデックスが作成されていますが、クエリに時間がかかりすぎており、Hibernate がインデックスを使用する代わりにクエリに対して毎回フル テーブル スキャンを実行しているためだと推測しています。
Hibernate でテーブルのデータベース統計を更新して、適切なクエリ プランを作成するにはどうすればよいですか?
以前はほとんど空だったデータベース テーブルに多くの行を入れています。次に、そのテーブルのデータに基づいてレポートを作成しています。テーブルにはインデックスが作成されていますが、クエリに時間がかかりすぎており、Hibernate がインデックスを使用する代わりにクエリに対して毎回フル テーブル スキャンを実行しているためだと推測しています。
Hibernate でテーブルのデータベース統計を更新して、適切なクエリ プランを作成するにはどうすればよいですか?
HibernateはネイティブSQLステートメントを実行できます。この方法で次を実行することもできますanalyze
。
Query analyze = session.createSQLQuery("analyze");
analyze.executeUpdate();
ネイティブSQLステートメントの実行に関する公式ドキュメントも参照してください。