解决方法
sql Server保存有关各种表中所有查询的统计信息.您可以使用以下代码来确定运行时间最长的查询(来自sys.dm_exec_query_stats表).
您应该运行以下DBCC命令:
此DBCC命令清除服务器缓存并重新启动查询运行时的日志记录:
DBCC FREEPROCCACHE
SELECT DISTINCT TOP 10 t.TEXT QueryName,s.execution_count AS ExecutionCount,s.max_elapsed_time AS MaxElapsedTime,ISNULL(s.total_elapsed_time / s.execution_count,0) AS AvgElapsedTime,s.creation_time AS LogCreatedOn,ISNULL(s.execution_count / DATEDIFF(s,s.creation_time,GETDATE()),0) AS FrequencyPerSec FROM sys.dm_exec_query_stats s CROSS APPLY sys.dm_exec_sql_text( s.sql_handle ) t ORDER BY s.max_elapsed_time DESC GO
您还应该查看Technet杂志文章Optimizing SQL Server Query Performance,该文章有一个查询,用于确定哪个查询是最昂贵的读取I / O查询,以及有关如何查看执行计划和其他优化的指导.