0

私は Hibernate を使用しており、次のテーブルがあります。

テーブル my_entity:

ID_ENTITY        int(10) unsigned PK
ID_ENTITY_TYPE   int(10) unsigned
NAME             varchar(256)
SYNONYM          varchar(32)
KEY `INDEX_synonym` (`SYNONYM`)

このテーブルには 180.000 行あります。

クエリを実行すると、かなりの数秒かかります。

 query = session.createQuery("from Entity c Where synonym = :synonym");
 query.setParameter(":synonym", MYKEY);     
 lst = query.list();  

インデックスを使用するように Hibernate に指示するにはどうすればよいですか?

4

1 に答える 1

3

Hibernate は、SQL クエリを生成して実行する以外には何もしません。ログインをオンにして、実行されるクエリを確認します。このクエリが希望どおりであることを確認してください。データベースを使用して実行計画を分析し、必要なインデックスがそこにあることを確認します。

180,000 行は、まともなデータベースには何もありません。クエリが大量のエンティティを熱心にフェッチされたアソシエーションとともにロードしない限り、このクエリは数ミリ秒で実行されるはずです。

于 2012-05-16T12:22:14.343 に答える