Need help with Hibernate? Read this first:
http://www.hibernate.org/ForumMailingli ... AskForHelp
Hibernate version:
3.0
Mapping documents:
<hibernate-mapping>
<class name="Refererdata" table="refererdata" schema="public">
<id name="refererdataid" type="long">
<column name="refererdataid" />
<generator class="assigned" />
</id>
<property name="counttimeaslong" type="java.lang.Long" index="idx_counttimeaslong">
<column name="counttimeaslong" />
</property>
<property name="counttimeastimestamp" type="timestamp">
<column name="counttimeastimestamp" length="29" />
</property>
<property name="usersession" type="string">
<column name="usersession" />
</property>
</class>
</hibernate-mapping>
<sql-query name="sql.average.pis" >
<return-scalar type="big_decimal" column="av"/>
select avg(temp.quantity) as av from
(
select usersession, count(*) as quantity from refererdata
where counttimeaslong between ? and ?
group by usersession
) as temp
</sql-query>
Name and version of the database you are using:
Postgre 8.2
The generated SQL (show_sql=true):
select avg(temp.quantity) as av from
(
select usersession, count(*) as quantity from refererdata
where counttimeaslong between ? and ?
group by usersession
) as temp
Diese Abfrage dauert über Hibernate ca. 40 Sekunden (die Tabelle ist sehr gross). Wenn ich die selbe Query direkt im Query Browser von Postgres ausführe dauert die nur ca. 3-5 Sekunden
auf counttimealong liegt folgender index:
CREATE INDEX idx_counttimeaslong
ON refererdata
USING btree
(counttimeaslong);
Mit meinem begrenzten Wissen über Hibernate kann ich nur vermuten, dass er den index ignoriert oder das caching vielleicht falsch eingestellt ist (benutze die Standardwerte).
Hat jemand eine Idee, welchen Schalter ich umlegen muss, um hibernate entsprechend schneller zu machen?
viele Grüsse und besten Dank im voraus