データのページ読み込みに問題があります。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>
AnnouncedLotクラスマッピングは
<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>
現在、データベースには約150万件の発表があり、350万件のロットがあります。1つのアナウンスには1つまたは100のロットを含めることができます。
ページは、アナウンスクエリの最初の結果を30個だけロードします。データベースにロットがない場合はすぐにロードされますが、ロットがある場合は約1.5分かかる場合があります。
私は怠惰をtrueに変更し、この問題をグーグルで検索しようとしましたが、あまり見つかりませんでした。誰かがこれを手伝うことができますか?
アップデート:
どのクエリに時間がかかるかを確認したところ、行数カウントクエリが原因であることがわかりました。デフォルトのフィルターパラメータのため、クエリにlots.sum条件が含まれていました。セットを使用する必要がないようにフィルターを変更し、パフォーマンスが向上しました。
助けてくれてありがとう。