У меня наблюдается некоторая отрицательная производительность по отсортированным запросам.
Вот как запрос генерируется и обрабатывается 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. Какие-либо улучшения в будущих выпусках, которые касаются моей проблемы?
С наилучшими пожеланиями,
Маттиас