簡體   English   中英

RowNumber函數中的Order By子句減慢了查詢性能

[英]Order By clause in RowNumber function slowing down the performance of my query

我有一個具有分頁功能的查詢,並且我正在使用ROW_NUMBER()函數。 我的rownumber函數中的order by子句是動態的,並且在調用sp時一直在更改。 它適用於幾列,但對於datetime數據類型的一列,則需要花費大量時間。 當我按降序對同一列進行排序時,令人驚奇的事情是查詢在幾秒鍾內運行,但是升序需要很多時間:(。

我嘗試在該datetime列上創建一個非聚集索引(因為我已經在該表上創建了聚集索引),但是它沒有幫助我。

您能否建議我可以做些什么來改善性能。

謝謝,

迪皮

假設這是SQL Server 2005(我沒有檢查2008),則ROW_NUMBER()函數因導致SQL優化器中的敏感性問題而臭名昭著。 Google先生將向您展示許多示例,這些示例中相對較小的更改(例如排序方向)會導致優化器創建非常不同的執行計划。

最好的選擇是檢查緩存的執行計划以查看差異:

SELECT sc.*
FROM master.dbo.syscacheobjects AS sc
WHERE sc.cacheobjtype = 'Executable Plan'

或者,您可以更改方法並采用類似的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM