0

我在排序的查詢中遇到了一些負面的性能。NHibernate排序性能

這是怎麼了正在生成的查詢和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

這是一個索引問題。謝謝! – Mattias

+0

不客氣,我會將它作爲答案發布。 –

回答

0

運行通過數據庫引擎優化顧問查詢,最有可能存在丟失的(或壞)指數。