【问题标题】:NHibernate sort performanceNHibernate 排序性能
【发布时间】:2011-09-20 08:41:21
【问题描述】:

我在排序的查询上遇到了一些负面的性能。

这就是 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。未来版本中是否有任何与我的问题相关的改进?

最好的问候, 马蒂亚斯

【问题讨论】:

  • 我在查询中没有看到任何我认为性能很糟糕的特定内容,您是否通过优化器运行查询以查看是否缺少任何索引?
  • 这是一个索引问题。谢谢!
  • 不客气,我会发布它作为答案。

标签: performance nhibernate nhibernate.search nhibernate-criteria database-performance


【解决方案1】:

通过数据库优化顾问运行查询,很可能存在缺失(或错误)的索引。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多