1

Play フレームワークのエンティティ クエリでデータベース インデックス ヒントを指定することは可能ですか。

私のコードは次のようになります:

public static List<Transaction> findOnInactive(Date date) {
    return Transaction.find(
            "date = ? and account in ( select d.acctNb from account d "
                    + " where d.date = ? and (d.inactive = true or d.blocked = true)" 
                    + " group by d.acctNb )", date, date).fetch();
}

生成されたクエリの実行には 20 秒かかります。ただし、同じクエリを手動で実行する

select * from transaction with (INDEX(_dta_index_k1_1)) ...

1秒しかかかりません。とにかく、JPA クエリでインデックス ヒントを指定できますか?

4

1 に答える 1

2

次のようなネイティブ SQL クエリを使用する必要があります。

return JPA.em().createNativeQuery(
    "select * from transaction with (INDEX(_dta_index_k1_1)) ...",
    Transaction.class).getResultList();
于 2012-04-10T08:45:50.873 に答える