首页 > 数据库 >【SQLServer】SQLServer执行计划的类型

【SQLServer】SQLServer执行计划的类型

时间:2022-09-23 08:44:43浏览次数:78  
标签:SQLServer Server 查询 所示 计划 SQL 类型 执行

1.【SQLServer】SQLServer执行计划概览

 

在上一篇文章中,我们详细描述了提交的SQL Server查询所经历的不同阶段以及SQL Server关系引擎如何处理它。SQL Server关系引擎生成执行计划,SQL Server存储引擎执行请求的数据检索或修改过程。在本文中,我们将讨论SQL Server执行计划的不同类型和格式。

执行计划类型

SQL Server执行计划是提交查询的执行路线图的图形表示,SQL Server查询优化器将遵循该路线图,以及执行查询代码的每个部分的成本。SQL Server为我们提供了两种主要类型的执行计划。

第一种类型:估计的执行计划。它是通过将提交的查询解析为查询将如何执行而不被真正执行的估计而生成的计划。

第二种类型:实际的执行计划,它是通过执行提交的查询生成的,显示执行查询时遵循的实际步骤。

大多数情况下,实际执行计划是数据库管理员的首选,因为它显示了有关查询执行统计信息的更多信息。你可以从估计的执行计划中受益,以解决需要很长时间运行的复杂查询,将能够在不需要执行的情况下生成执行计划。但在某些情况下,由于实际表数据和统计数据之间的差异,估计和实际执行计划可能会有很大差异。频繁的数据插入和修改操作也会降低统计数据的准确性。

可以通过更新表或索引的统计信息来解决此问题。在某些情况下,当查询有一个尚未创建的临时表时,将无法生成估计执行计划,因为没有执行查询来创建临时表,从而导致如下错误消息:

 

估计的执行计划可以用多种方式来查看:

1.在Studio中,“查询”菜单中,选择“显示估计的执行计划”,如下所示:

2.点击“显示估计的执行计划”,如下所示:

3.右击查询编辑器,选择“显示估计的执行计划”,如下所示:

4.使用快捷键“Ctrl+L

Actual Execution Plan与Estimated Execution Plan不同,不能直接显示。它需要执行提交的查询才能显示。可以使用不同的方式将实际执行计划包含在查询中:

1.在Studio中,“查询”菜单中,选择“包括实际的执行计划”,如下所示:

2.点击快捷图标,“包括实际的执行计划”,如下所示:

3.右击查询编辑器,选择“包括实际的执行计划”,如下所示:

4.使用快捷键“Ctrl+M”

键入Ctrl+M快捷键,将包括提交查询的实际执行计划。换句话说,将对该查询或在该窗口中执行的任何查询打开“实际执行计划”选项。执行查询时,将显示实际执行计划,如下面的快照所示:

在SQL Server 2016中,Microsoft引入了一项新功能,使我们能够监控执行计划中每个操作的运行时统计信息,也称为实时执行统计信息,并在执行计划期间跟踪不同操作之间的数据流,查询执行过程,执行统计包括处理的行数、每个操作消耗的时间和查询执行的整体进度。

实时查询统计信息可以以不同的方式查看:

1.在Studio中,“查询”菜单中,选择“包括实时查询统计信息”,如下所示:

2.任务栏点击“包括实时查询统计信息”,如下所示:

3.右击查询编辑器,选择“包括实时查询统计信息”,如下所示:

4.打开"活动和监视器",右击目标查询:

效果如下所示:

 

执行计划的格式

有三种格式显示执行计划。

1.图形格式

SQL Server执行计划的图形视图是最常见和最友好的计划格式,它为我们提供了一种快速简便的方法来阅读和分析计划。图形视图包括本文前面讨论的实际、估计和实时查询统计计划。执行计划的图形格式唯一的缺点是执行细节隐藏在计划箭头和操作符属性后面,如下图:

 

2.文本格式(有三种形式)

(1)showplan_all

显示的是预估的执行计划。信息较全。

(2)showplan_text

显示的是预估的执行计划,信息较少

(3)STATISTICS PROFILE

显示的是真正的执行计划

3.xml格式(有两种形式)

(1)SHOWPLAN_XML

显示的是预估的执行计划

(2)STATISTICS XML

显示的是真正的执行计划

 

本文地址:https://www.cnblogs.com/abclife/p/16698166.html

原文地址:https://www.sqlshack.com/sql-server-execution-plans-types/

标签:SQLServer,Server,查询,所示,计划,SQL,类型,执行
From: https://www.cnblogs.com/abclife/p/16698166.html

相关文章

  • 利用强类型数据集创建数据库访问层
    创建数据访问层项目2021/10/20 本文档是 VisualC# 教程  (切换到VisualBasic教程)该教程从头开始使用TypedDataSet(强类型DataSet)创建数据访问层(D......
  • Typescript类型体操 - Reverse
    题目中文实现类型版本的数组反转Array.reverse例如:typea=Reverse<['a','b']>;//['b','a']typeb=Reverse<['a','b','c']>;//['c','b','a']English......
  • 把 Number 类型转为 String 类型的 3 种方法
    当你在实际项目开发中,遇到需要把Number转为Sting类型时,可以采取下面3种方法:首先定义一个变量:letnum=666;1. ES6模板字符串`${num}`2. JS隐式类型转换......
  • Vue 的父组件和子组件生命周期钩子函数执行顺序?
    Vue的父组件和子组件生命周期钩子函数执行顺序可以归类为以下4部分:加载渲染过程父beforeCreate->父created->父beforeMount->子beforeCreate->子crea......
  • Typescript类型体操 - TupleToNestedObject
    题目中文给定一个只包含字符串类型的元组类型T和一个类型U,递归地构建一个对象.EnglishGivenatupletypeTthatonlycontainsstringtype,andatypeU,build......
  • Typescript类型体操 - ObjectEntries
    题目中文实现Object.entries的类型版本示例:interfaceModel{name:string;age:number;locations:string[]|null;}typemodelEntries=Objec......
  • 【代码片段】Qt6.2.4 C++ 执行CMD命令
    参考https://blog.csdn.net/vample/article/details/78872587https://blog.csdn.net/liuyukuan/article/details/5974517环境环境版本windows10QT6.2.......
  • MySQL日期类型介绍及格式化
    1、MySQL中常用的几种时间类型有:date、datetime、time、year、timestamp数据类型占用字节最小值最大值零值表示备注date41000-01-019999-12-310000-00-0......
  • 类型转换
    类型转换1.由低转高byte,short,char,int,long,float,double2.运算中不同类型的数据先转化为同一数据,然后进行运算3.强制转换(类型)变量名例:(byte)i 高——低4.自动转换低—......
  • go类型系统概序
    基本类型字符串类型string布尔类型bool数值类型int8,int16,int32,int64,uint8,uint16,uint32,uint64,int,uint,uintptrtype,rune其中type为uint8......