您如何测试仅在首次运行时速度较慢的查询?¹ 是正确CHECKPOINT
的DBCC DROPCLEANBUFFERS
工具吗?如果是这样,是否以系统管理员身份运行它是所有需要的还是涉及其他内容?
CHECKPOINT;
DBCC DROPCLEANBUFFERS;
GO
在我不能再使查询变慢之前,我要问,除非我重新启动 SQL Server 实例(这当然非常慢)。
(1) 没什么微妙的:第一次运行 35 秒到 51 秒,之后大约 0.02 秒
您如何测试仅在首次运行时速度较慢的查询?¹ 是正确CHECKPOINT
的DBCC DROPCLEANBUFFERS
工具吗?如果是这样,是否以系统管理员身份运行它是所有需要的还是涉及其他内容?
CHECKPOINT;
DBCC DROPCLEANBUFFERS;
GO
在我不能再使查询变慢之前,我要问,除非我重新启动 SQL Server 实例(这当然非常慢)。
(1) 没什么微妙的:第一次运行 35 秒到 51 秒,之后大约 0.02 秒
重新启动 Sql Server 会清除计划缓存,因此在第一次执行查询时,必须构建一个新的执行计划。查看清除 SQL Server 计划缓存的八种不同方法。
或者,您可以尝试通过添加(或删除)一些额外的空格或空行来更改查询文本,这会强制构建新计划。
但是,如果构建新计划需要 35 到 51 秒,我会感到非常惊讶。
您可以通过
set statistics time on
在针对空计划缓存执行查询之前发出查询会话(或者您对查询文本进行了轻微更改,以便新的需要执行计划)。在 SSMS 消息窗口中,查找如下内容:此外,查看为什么我的查询在第二次运行时速度更快?