0

ソートされたクエリでパフォーマンスが低下します。

これは、NHibernateによってクエリが生成およびレンダリングされる方法です。

SELECT   TOP 50 y0_,
                y1_
FROM     **(SELECT distinct r1_.Id                         as y0_,
                          this_.Id                       as y1_,
                          ROW_NUMBER()
                            OVER(ORDER BY this_.Id DESC) as __hibernate_sort_row
          FROM   Event this_
                 inner join Registration r1_
                   on this_.Id = r1_.EventId
          WHERE  this_.IsDeleted = 0 /* @p2 */
                 and this_.SportId in (22 /* @p3 */)) as query**
WHERE    query.__hibernate_sort_row > 20
ORDER BY query.__hibernate_sort_row;

太字の部分(**-記号内)は、すべての結果をフェッチして整理しています。これには時間がかかります。このクエリをより効率的にする方法はありますか?オーバーヘッドをあまり発生させずに、並べ替えとページングを可能にしたいだけです。

NHibernate2.1を使用しています。私の問題に関連する将来のリリースでの改善はありますか?

よろしく、マティアス

4

1 に答える 1