SQL性能优化常用语句(摘录网上)

1.把trace文件导入到表中

SELECT IDENTITY(BIGINT, 1, 1) AS RowNumber,* 

into TableName

FROM fn_trace_gettable('trace.trc', default)

2.查询CPU开销大的语句

SELECT top 100

    total_worker_time/execution_count AS avg_cpu_cost, plan_handle,

    execution_count,

    (SELECT SUBSTRING(text, statement_start_offset/2 + 1,

       (CASE WHEN statement_end_offset = -1

          THEN LEN(CONVERT(nvarchar(max), text)) * 2

          ELSE statement_end_offset

       END - statement_start_offset)/2)

    FROM sys.dm_exec_sql_text(sql_handle)

    ) AS query_text,creation_time

 FROM sys.dm_exec_query_stats

 where creation_time > '2014-11-01'

and (total_worker_time/execution_count) > 146341

ORDER BY [avg_cpu_cost] DESC

3.查询阻塞

SELECT a.* FROM sys.[sysprocesses] a

WHERE a.[spid]>50 AND DB_NAME(a.[dbid])='DBName' and a.spid <> @@SPID and a.blocked > 0

4.查询连接数

SELECT COUNT(*) FROM [sys].[dm_exec_sessions] WHERE [session_id]>50

5.存储过程物理读

SELECT TOP (50) p.[name] AS [SP Name]

    ,qs.total_physical_reads AS [TotalPhysicalReads]

    ,qs.total_physical_reads / qs.execution_count AS [AvgPhysicalReads]

    ,qs.execution_count

    ,qs.total_logical_reads

    ,qs.total_elapsed_time

    ,qs.total_elapsed_time / qs.execution_count AS [avg_elapsed_time]

    ,qs.cached_time

FROM sys.procedures AS p

INNER JOIN sys.dm_exec_procedure_stats AS qs ON p.[object_id] = qs.[object_id]

WHERE qs.database_id = DB_ID()

    AND qs.total_physical_reads > 0

ORDER BY qs.total_physical_reads DESC

 

你可能感兴趣的:(性能优化)