MSsql优化学习记录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 时间返回排名前五个的查询的相关信息。 此示例将根据查询的查询哈希对查询进行聚合,以便按照查询的累积资源消耗来分组在逻辑上等效的查询。

GO
SELECT 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_stats
GROUP BY query_stats.query_hash
ORDER 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_rows
FROM 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优化学习记录的主要内容,如果未能解决你的问题,请参考以下文章

MSSQL语句学习(查询表的总记录数)

ElasticSearch学习问题记录——Invalid shift value in prefixCoded bytes (is encoded value really an INT?)(代码片段

linux学习:Nginx--常见功能配置片段与优化-06

方便调试使用的代码片段

Microsoft SQL Server 代码片段收集

[Azure/mssql]如何获取插入查询记录集