繁体   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