Я выполняю поиск по одной из моих таблиц (устаревшая база данных) и получаю здесь ужасное время. Запрос строится на критерии апи из спящего режима и т.д .: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();
Как вы можете видеть, что я уже делаю подкачки здесь, чтобы улучшить Perfomance. Этот критерий требует в среднем ~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