Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 稳定的SQL Server存储过程性能异常下降_Sql Server_Stored Procedures_Sql Server 2005_Sqlperformance - Fatal编程技术网

Sql server 稳定的SQL Server存储过程性能异常下降

Sql server 稳定的SQL Server存储过程性能异常下降,sql-server,stored-procedures,sql-server-2005,sqlperformance,Sql Server,Stored Procedures,Sql Server 2005,Sqlperformance,我在SQLServer2005中遇到了一个非常奇怪的问题 昨天,用户报告说我们数据库应用程序的某个特定部分运行缓慢。我不确定这种慢度有多普遍-它肯定不是无处不在,因为这是系统报告的唯一部分-但我隔离了相关的存储过程,该存储过程过去运行时间为2-3秒,现在持续运行时间为50-60秒 这是一个复杂的查询——多层子查询。它只返回16列中的42行 查询如下所示: select col1,2,3,4,5,... from ( select .... ) t ORDER BY col1 我开始对查询进行

我在SQLServer2005中遇到了一个非常奇怪的问题

昨天,用户报告说我们数据库应用程序的某个特定部分运行缓慢。我不确定这种慢度有多普遍-它肯定不是无处不在,因为这是系统报告的唯一部分-但我隔离了相关的存储过程,该存储过程过去运行时间为2-3秒,现在持续运行时间为50-60秒

这是一个复杂的查询——多层子查询。它只返回16列中的42行

查询如下所示:

select col1,2,3,4,5,...
from 
( select .... ) t
ORDER BY col1
我开始对查询进行分析,找出什么比较慢,并发现删除最后的
orderby
子句使性能恢复正常

这是非常神秘的。我无法在我们的开发服务器上复制该问题。它只有42行,所以ORDERBY子句应该是无关紧要的。在两台服务器上,执行计划完全相同,且没有订购人和


如果您能就生产服务器上可能发生的变化进行头脑风暴,我们将不胜感激

ALTER INDEX ALL ON BIGGESTABLINQUERY 重建

我成功了!它是非常分散的,在5个指数上占55-98%,聚集在一起占55%。现在我还要回顾一下其他大型表


感谢rcl的simon和Tab Alleman

很多事情,但如果只是这一个查询,它可能是未完成的写锁-除非您使用(nolock)指定,否则该查询将采用读锁,这不一定是一件好事。也可能是其中一个表上的索引碎片。您是否有执行前后的计划进行比较?您是否至少有一个执行后计划要查看?在prod now上,有和没有order by的版本之间的执行计划是相同的,并为order by版本添加了最后一个排序运算符。我在DEV上生成了一个执行计划,其中没有出现问题,而且是相同的。是的,您可以尝试重建索引。我会尝试一下,谢谢!