我在排序的查询上遇到了一些负面的表现。
这是 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。未来版本中与我的问题相关的任何改进?
最好的问候, 马蒂亚斯