【发布时间】:2015-11-13 19:01:00
【问题描述】:
我刚刚分析了对特定 SQL Server 存储过程的调用。它非常慢,所以我决定分析它。
结果令人困惑:
- 执行过程需要 1 分 24 秒。
- 同时执行两个相同的调用需要 2 分 50 秒。显然,正在发生一些错误的阻塞和上下文交换。
- 当打开实际执行计划并运行一个调用时,需要 4 分 48 秒。客户端统计信息现在告诉我总执行时间是 3000 毫秒。
发生了什么?
实际执行计划真的会干扰那么多吗?
这意味着在某处应该有一个警告,表明执行时间要长得多,而且统计信息也很差。
该过程的规模并不大,但具有令人讨厌的复杂性:游标、五级嵌套选择、临时表、子过程和函数调用。
【问题讨论】:
-
我们后来发现我们的测试数据库有问题。在 Azure 中,我们导出了一个 bacpac 文件,该文件已还原到我们的测试数据库。由于某种原因,还原未完成。恢复后没有启用索引!!!这显然在所有测试运行中给出了非常奇怪的结果。
标签: sql-server stored-procedures statistics