Производительность сортировки NHibernate - PullRequest
0 голосов
/ 20 сентября 2011

У меня наблюдается некоторая отрицательная производительность по отсортированным запросам.

Вот как запрос генерируется и обрабатывается 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;

Жирная часть (в символах **) извлекает все результаты и упорядочивает их - это то, что требует времени. Есть ли способ сделать этот запрос более эффективным? Я просто хочу сделать возможной сортировку и разбиение по страницам, не создавая слишком много накладных расходов.

Я использую NHibernate 2.1. Какие-либо улучшения в будущих выпусках, которые касаются моей проблемы?

С наилучшими пожеланиями, Маттиас

1 Ответ

0 голосов
/ 20 сентября 2011

Запустите запрос через советник по настройке базы данных, скорее всего, отсутствует (или неверный) индекс.

...