如何清除 SQL Server 2005/2008 中的查询执行统计信息

问题描述 投票:0回答:2

基于使用从这篇文章中获得的这段非常有用的 SQL 来获取查询执行统计信息执行次数最多的存储过程 - 堆栈内存溢出

SELECT TOP 100
   qt.TEXT AS 'SP Name',
   SUBSTRING(qt.text, qs.statement_start_offset/2, CASE WHEN (qs.statement_end_offset = -1) THEN LEN(qt.text) ELSE (qs.statement_end_offset - qs.statement_start_offset)/2 END) AS actual_query,
   qs.execution_count AS 'Execution Count',
   qs.total_worker_time/qs.execution_count AS 'AvgWorkerTime',
   qs.total_worker_time AS 'TotalWorkerTime',
   qs.total_physical_reads AS 'PhysicalReads',
   qs.creation_time 'CreationTime',
   qs.execution_count/DATEDIFF(Second, qs.creation_time, GETDATE()) AS 'Calls/Second'
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
WHERE qt.dbid = (SELECT dbid
                FROM sys.sysdatabases
               WHERE name = 'BSP')
ORDER BY qs.total_worker_time/qs.execution_count DESC

如何彻底清除这些执行统计数据并从头开始?

这将特别有用,因为开发错误和测试导致例程通常被调用大量次,从而使真实的使用级别无效。

sql sql-server performance statistics sql-execution-plan
2个回答
62
投票
DBCC FREEPROCCACHE
DBCC DROPCLEANBUFFERS

0
投票

我会谨慎地告诉人们执行上述命令,对我来说,由于政策限制,它不起作用(这可能是最好的)。我希望这对某人有帮助,但如果您使用 Microsoft SQL Server Management Studio,对我有用的是“查询”→“重置客户端统计信息”。

© www.soinside.com 2019 - 2024. All rights reserved.