2

NHibernate (問題があれば SQL Server 2000) に問題があります。

500 を指定しても、NHibernate は 10 に等しいバッチサイズを使用するようです (しかし、10 未満のサイズを指定すると、たとえば 3 - 3 が使用されます)。

<bag name="RiskTypes" table="CalculationQuery" lazy="false" batch-size="50">
  <key column="CalculationID"></key>
  <many-to-many class="RiskType" column="RiskType"></many-to-many>
</bag>

11 個のアイテムを読み込んでいますが、NHProf で 2 つのクエリを実行していることがわかります。

risktypes0_.CalculationID を Calculat1_1_​​ として選択し、
       risktypes0_.RiskType を RiskType1_ として、
       risktype1_.RiskTypeID を RiskTypeID5_0_ として、
       risktype1_.RiskTypeName as RiskType2_5_0_
FROM CalculationQuery risktypes0_
       左外部結合 RiskType risktype1_
         risktypes0_.RiskType = risktype1_.RiskTypeID について
WHERE risktypes0_.CalculationID in (373 /* @p0 */,363 /* @p1 */,364 /* @p2 */,365 /* @p3 */,
                                     366 /* @p4 */,367 /* @p5 */,368 /* @p6 */,369 /* @p7 */,
                                     370 /* @p8 */,371 /* @p9 */)
risktypes0_.CalculationID を Calculat1_1_​​ として選択し、
       risktypes0_.RiskType を RiskType1_ として、
       risktype1_.RiskTypeID を RiskTypeID5_0_ として、
       risktype1_.RiskTypeName as RiskType2_5_0_
FROM CalculationQuery risktypes0_
       左外部結合 RiskType risktype1_
         risktypes0_.RiskType = risktype1_.RiskTypeID について
WHERE risktypes0_.CalculationID = 372 /* @p0 */
4

0 に答える 0