使用集合加载数据的速度很慢



我在加载数据页面时遇到问题。 Rich:DataTable 用于显示公告列表。

公告类包括 AnnouncedLot 类集,在映射中将其指定为

<set cascade="all,delete-orphan" lazy="false" name="lots" table="ad_lot">
<key column="lotId"/>
<many-to-many class="AnnouncedLot" column="anlotId"/>
</set>

宣布的批次类映射是

<class name="AnnouncedLot" table="announcedLot">
  <id name="id" type="java.lang.Long" unsaved-value="-1">
     <generator class="native"/>
  </id>
  <property name="idValue" not-null="false" unique="true"/>
  <property name="databaseId" not-null="false" unique="true"/>
  <property length="4047" name="title"/>
  <property length="4047" name="description"/>
  <property length="4047" name="source"/>
  <property length="65534" name="adText"/>
  <property name="sum"/>
</class>
目前,数据库中大约有1,5百万个

公告和3,5百万手。一个公告可以有 1 手甚至 100 手。

页面仅加载公告查询的 30 个第一个结果。当数据库中没有批次时,它会快速加载,但对于很多,可能需要大约 1,5 分钟。

我试图将懒惰更改为真实并谷歌这个问题,但没有找到太多。谁能帮忙?

更新:

在检查了花费大量时间的查询后,我发现行计数查询是原因。由于默认筛选器参数,查询包含 lots.sum 条件。我已经更改了过滤器,因此它不必使用该集,并且性能有所提高。

谢谢大家的帮助。

尝试在多对多关联上使用批处理大小属性。

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/performance.html#performance-fetching-batch

相关内容

  • 没有找到相关文章

最新更新