首页 > 代码库 > MSsql优化学习记录
MSsql优化学习记录
- MSsql优化篇
1 --该视图可以用来优化sql,包含sql执行的多种信息2 SELECT TOP 10 * FROM sys.dm_exec_query_stats
sys.dm_exec_query_stats 中的字段sql_handle 通过调用 sys.dm_exec_sql_text 动态管理函数,sql_handle 可以和 statement_start_offset 及 statement_end_offset 一起用于检索查询的 SQL 文本。
sys.dm_exec_query_stats 中的字段plan_handle 表示包含查询的编译计划的标记。 可以将此值传递给 sys.dm_exec_query_plan 动态管理函数来获取查询计划。
以下示例按平均 CPU 时间返回排名前五个的查询的相关信息。 此示例将根据查询的查询哈希对查询进行聚合,以便按照查询的累积资源消耗来分组在逻辑上等效的查询。
GOSELECT TOP 5 query_stats.query_hash AS "Query Hash", SUM(query_stats.total_worker_time) / SUM(query_stats.execution_count) AS "Avg CPU Time", MIN(query_stats.statement_text) AS "Statement Text"FROM (SELECT QS.*, SUBSTRING(ST.text, (QS.statement_start_offset/2) + 1, ((CASE statement_end_offset WHEN -1 THEN DATALENGTH(ST.text) ELSE QS.statement_end_offset END - QS.statement_start_offset)/2) + 1) AS statement_text FROM sys.dm_exec_query_stats AS QS CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) as ST) as query_statsGROUP BY query_stats.query_hashORDER BY 2 DESC;GO
以下示例返回查询的行计数聚合信息(总行数、最小行数、最大行数和上一次行数)。
SELECT qs.execution_count, SUBSTRING(qt.text,qs.statement_start_offset/2 +1, (CASE WHEN qs.statement_end_offset = -1 THEN LEN(CONVERT(nvarchar(max), qt.text)) * 2 ELSE qs.statement_end_offset end - qs.statement_start_offset )/2 ) AS query_text, qt.dbid, dbname= DB_NAME (qt.dbid), qt.objectid, qs.total_rows, qs.last_rows, qs.min_rows, qs.max_rowsFROM sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt WHERE qt.text like ‘%SELECT%‘ ORDER BY qs.execution_count DESC;
关于sys.dm_exec_query_stats 官方的详细介绍
https://msdn.microsoft.com/zh-cn/library/ms189741%28v=sql.110%29.aspx
随时发现随时更新
MSsql优化学习记录
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。