我正在搜索我的一個表(傳統數據庫)並在此處收到可怕的時間。查詢是由Hibernate的標準API,例如:Hibernate,DB2 - 運行緩慢的查詢
Criteria crit = getSessionFactory().getCurrentSession().createCriteria(P1.class);
crit.add(Restrictions.sqlRestriction("{alias}.compno like ?", "%" + s + "%", new StringType()));
crit.setMaxResults(25);
crit.setFirstResult(0);
crit.addOrder(Order.asc("compno"));
crit.list();
建立正如你可以看到我已經在做尋呼這裏以改善更流暢。該標準平均需要~6 seconds
。
那麼它看起來像這樣
select * from SCHEM.P1 where compno like '%100%' order by compno fetch first 25 rows only
本地查詢只需要10 ms
這是一個巨大的差異海事組織。爲什麼標準運行如此緩慢?我需要切換回原生的SQL查詢嗎?
上的評論好一點:
是有一些關係,這是我沒有對範圍:
<set name="pI" table="P12" lazy="false">
<key column="awcompno" update="false" />
<one-to-many class="org.gee.hibernate.P12" not-found="ignore"/>
</set>
<one-to-one name="info" class="org.gee.hibernate.P13" />
<set name="ma" table="P03" lazy="true" schema="SCHEMP" mutable="false" >
<key column="macountry" property-ref="land" update="false" />
<one-to-many class="org.gee.hibernate.P03" not-found="ignore" />
</set>
<set name="users" table="P15" lazy="true">
<key column="apcompno" update="false" />
<one-to-many class="org.gee.hibernate.P15" not-found="ignore"/>
</set>
需要更多信息,請看:你用一個一對多/多到一個/多個一對多在實體? – 2010-12-07 10:58:18
雖然更新了我的問題。 – onigunn 2010-12-07 11:08:00