SQL Server执行计划(2) - 如何查看执行计划
在上一篇文章中,我们详细描述了提交的 SQL Server 查询所经历的不同阶段以及 SQL Server 关系引擎如何处理它。SQL Server 关系引擎生成执行计划,SQL Server 存储引擎执行请求的数据检索或修改过程。在本文中,我们将讨论 SQL Server 执行计划的不同类型和格式。
执行计划类型
SQL Server 执行计划是已提交查询的执行路线图的图形表示,SQL Server 查询优化器将遵循该路线图。SQL Server 为我们提供了两种主要类型的执行计划。
- 预估执行计划 : 它是通过解析提交的查询生成的计划,在不执行的情况下预估对查询将如何执行。
- 实际执行计划: 它是通过执行提交的查询生成的,显示执行查询时遵循的实际步骤。
大多数情况下,数据库管理员更喜欢实际执行计划,因为它显示了有关查询执行统计信息的更多信息。但是对于一些需要很长时间运行的复杂查询,你可以在不实际执行的情况通过预估执行计划进行故障排除。但在某些情况下,由于实际表数据和统计信息之间的差异,预估执行计划和实际执行计划可能会有很大差异。频繁的数据插入和修改操作也会使统计数据不太准确。
这个问题可以通过更新表或索引的统计信息来解决。在某些情况下,当查询具有尚未创建的临时表时,将无法生成估计执行计划,因为没有执行查询来创建表,从而导致如下错误消息:
预估执行计划(Estimated Execution Plan)
预估执行计划可以通过一下几种方式查看:
从查询(Query)菜单中选择Display Estimated Execution Plan选项,如下所示:
单击任务栏中的Display Estimated Execution Plan图标,如下所示:
右击查询编辑器,选择Display Estimated Execution Plan选项,如下图:
键入Ctrl+L键盘快捷键,将显示已提交查询的估计执行计划,如下面的快照所示:
实际执行计划(Actual Execution Plan)
实际执行计划与预估执行计划不同,不能直接显示。它需要执行提交的查询才能显示。可以使用不同的方式将实际执行计划包含在查询中:
从查询(Query)菜单中选择Include Actual Execution Plan选项,如下所示:
单击任务栏中的Include Actual Execution Plan图标,如下所示:
右键单击查询编辑器并选择Include Actual Execution Plan选项,如下所示:
键入Ctrl+M键盘快捷键,将包含已提交查询的实际执行计划。换句话说,将为该查询或在该窗口中执行的任何查询打开实际执行计划选项。执行查询时,将显示实际执行计划,如下面的快照所示:
实时执行统计信息(Live Execution Statistics)
在 SQL Server 2016 中,Microsoft 引入了一项新功能,该功能使我们能够监控执行计划中每个操作符的运行时统计信息,也称为实时执行统计信息,并在执行计划期间跟踪不同操作符之间的数据流动。查询执行过程。执行统计包括处理的行数、每个操作消耗的时间和查询执行的整体进度。
可以通过一下方式显示实时查询统计信息:
从查询(Query)菜单中选择Include Live Query Statistics选项,如下所示:
单击任务栏中的Include Live Query Statistics图标,如下所示:
右键单击查询编辑器并选择Include Live Query Statistics选项,如下所示:
打开活动监视窗口并右键单击目标查询,然后选择Show Live Execution Plan选项,如下所示:
包含 Live Query Statistics 后,运行查询并监控查询的运行时执行统计信息以及数据在计算符之间的流动情况。示意图如下:
执行计划格式
在 SQL Server 中,可以通过三种不同的方式查看为每个查询生成的执行计划,具体取决于您设法查看的详细级别和计划生成方法。三种执行计划格式是:
- 图形格式:
SQL Server 执行计划的图形视图是最常见和最友好的计划格式,它为我们提供了一种快速简便的方式来阅读和分析计划。图形视图包括本文前面讨论的实际、预估和实时查询统计计划。执行计划的图形格式唯一的缺点是执行细节隐藏在计划箭头和运算符的属性后面,如下所示:
- 文本格式:
文本执行计划可以立即以文本视图提供关于目标查询的少量的执行信息。文本执行计划三种详细格式:
SHOWPLAN_ALL:显示查询的预估计划以及有关查询执行的完整信息集,如下所示:
SHOWPLAN_TEXT:显示查询的预估计划,其中有关查询执行的信息集非常有限,如下所示:
STATISTICS PROFILE:显示查询的实际执行计划和完整的详细信息集,如下所示(注意查询结果的显示方式):
XML 格式:
XML 计划为我们提供了一套完整的以 XML 结构查看的查询执行信息,这些信息难以阅读和分析,主要用于与其他专家共享以进行故障排除。
XML 执行计划有两种详细格式:
SHOWPLAN_XML:显示查询的估计执行计划,如下所示(可以使用 Show Execution Plan XML 选项轻松地从图形计划中获得 XML 计划):
STATISTICS XML:显示查询的实际执行计划,如下图:
至此,我们已经熟悉了 SQL Server 执行计划的不同类型和格式、这些类型和格式之间的差异以及我们如何从这些类型中获益。请继续关注下一篇文章,我们将在其中讨论执行计划的不同组件以及如何对其进行分析。
参考
- SET SHOWPLAN_TEXT(Transact-SQL)
- SET SHOWPLAN_ALL (Transact –SQL)
- SET SHOWPLAN_XML (Transact – SQL)
- Displaying Graphical Execution Plans (SQL
Server Management Studio)
系列目录
SQL Server 执行计划(1) - 概述
SQL Server 执行计划(2) - 如何查看执行计划
SQL Server 执行计划(3) - 如何分析图形执行计划
SQL Server 执行计划(4) - 执行计划运算符详解1
SQL Server 执行计划(5) - 执行计划运算符详解2
SQL Server 执行计划(6) - 执行计划运算符详解3
SQL Server 执行计划(7) - 执行计划运算符详解4
SQL Server 执行计划(8) - 使用执行计划进行查询性能调优
[SQL Server 执行计划(9) - 保存和比较执行计划]
SQL Server执行计划(2) - 如何查看执行计划相关推荐
- SQL Server数据库技术大全——14讲 执行计划
SQL Server数据库技术大全--14讲 执行计划 讲解了如何查看统计信息,如何查看执行计划以及如何简单的优惠数据库. [hjp2=500,375,true]http://player.youk ...
- SQL Server 2000中的并行处理和执行计划中的位图运算符
SQL Server 2000中的并行处理和执行计划中的位图运算符 摘抄自:SQLServer 2000并行处理和位图简介 刘志斌 并行查询介绍 Degree of Parallelism(并行度) ...
- SQL Server 2017:mTVF的交错执行
In this post, we are going to look at the new feature in SQL Server 2017 – interleaved execution. Yo ...
- SQL Server 2008 复制 遇到: 进程无法执行 'sp_replcmds' 命令
文章目录 SQL Server 2008 复制 遇到: 进程无法执行 'sp_replcmds' 命令 故障描述 问题排查 更改方式1 更改方式2 更改方式3 参考资料 SQL Server 2008 ...
- SQL server中的SELECT查询语句执行顺序
各位大牛们好第一次写博客有点小激动!以后我会把自己的心得分享给大家,求各种评论 SQL server 中SELSECT查询语句的执行顺序如下: (8) SELECT (9) DISTINCT (1 ...
- SQL Server 2005查询处理结构-用户模式计划(UMS)
SQL Server 2005查询处理结构-用户模式计划(UMS) 在对数据库进行性能调优时,必须全面的考虑各种可能造成系统性能瓶颈的各种因素,因此深入了解SQL Server 2005的查询处理机构 ...
- 【原创】SQL SERVER 查询Job作业基本信息及执行情况
查询作业基本信息和作业执行情况 SELECT[jop].[job_id] AS '作业唯一标识符',[jop].[ name ] AS '作业名称',[dp].[ name ] AS '作业创建者', ...
- oracle 执行计划 ppt,oracle查看执行计划的方法
查看执行计划的方法 Explain Plan For SQL 不实际执行SQL语句,生成的计划未必是真实执行的计划 必须要有plan_table SQLPLUS AUTOTRACE 除set auto ...
- SQL SERVER 查询Job作业基本信息及执行情况
1.查询作业基本信息和作业执行情况 SELECT [jop].[job_id] AS '作业唯一标识符' ,[jop].[name] AS '作业名称' ,[dp].[name] ...
- SQL Server 2005 查询处理器未能为执行并行查询启动必要的线程资源。
今天早上程序突然报: Microsoft OLE DB Provider for SQL Server 错误 '80040e14' 查询处理器未能为执行并行查询启动必要的线程资源. 赶快重启了sql服 ...
最新文章
- Nat. Med. | 人工智能临床研究新指南
- 【ruoyi若依】Caused by: java.lang.NoClassDefFoundError: com/sun/jna/platform/win32/VersionHelpers
- 双绞线直连法如何才能使两台电脑实现共享
- Redis学习总结(22)——Redis的主从复制是如何做的?复制过程中也会产生各种问题?
- Flex中List自己定义itemrenderer渲染问题的解决
- 大疆网上测评题库_网上测评有什么技巧或者题库推荐?
- Centos7安装WPS
- android 5.01,爱思加强版
- Simulink转化为低版本文件
- mysql哨兵模式_redis 哨兵模式集群搭建
- [线性代数]n维向量(秦静老师主讲)
- jQuery拖拽图片拼图验证插件
- 用户输入日期利用python简单实现农历转阳历功能(1901-2099年之间)
- html用360浏览器的好处,IE、360、百度等主流浏览器使用性能比较
- (一)OSG初学者入门基础教程
- 【哔哩哔哩笔试】顺时针打印数字矩阵
- object-oriented javascript【目录】
- 通过fork来剖析Linux内核的内存管理和进程管理(下)
- 开源后台管理框架之AdminLTE学习
- 【Vue】Vue3脚手架