国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > 数据库 > Sqlserver > SQL SERVER 图形执行计划中的图标学习[一]

SQL SERVER 图形执行计划中的图标学习[一]

来源:程序员人生   发布时间:2014-05-08 04:26:51 阅读次数:3250次

1、建立示例数据库(TestDB):

USE [master]

GO

IF EXISTS (SELECT name FROM sys.databases WHERE name = N'TestDB')

    DROP DATABASE [TestDB]

CREATE DATABASE [TestDB]

2、建立一张新表(Nums,该方法来源SQL SERVER 2005技术内幕:查询):

USE [TestDB]

GO

IF OBJECT_ID('dbo.Nums') IS NOT NULL

 DROP TABLE dbo.Nums;

GO

CREATE TABLE dbo.Nums(n INT NOT NULL PRIMARY KEY);

DECLARE @max AS INT, @rc AS INT;

SET @max = 1000000;

SET @rc = 1;

INSERT INTO Nums VALUES(1);

WHILE @rc * 2 <= @max

BEGIN

 INSERT INTO dbo.Nums SELECT n + @rc FROM dbo.Nums;

 SET @rc = @rc * 2;

END

INSERT INTO dbo.Nums

 SELECT n + @rc FROM dbo.Nums WHERE n + @rc <= @max;

GO

3、我们删除聚集索引

USE [TestDB]

GO

IF EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[Nums]') AND name = N'PK_Nums')

ALTER TABLE [dbo].[Nums] DROP CONSTRAINT [PK_Nums]

4、对无索引表执行T-SQL语句:

    4.1、语句:SELECT n FROM [TestDB].[dbo].[Nums]

选择包括实际的执行计划,我们将看到:

SELECT

表扫描(Table Scan):该运算符从 参数(Argument) 列中指定的表中检索所有行。如果 Argument 列中出现 WHERE:() 谓词,则仅返回满足该谓词的行。它既是一个逻辑运算符,也是一个物理运算符。

箭头:代表数据流向,高度代表数据的大小。

    4.2、语句:INSERT INTO [TestDB].[dbo].[Nums] ([n]) VALUES (1000001)

选择包括实际的执行计划,我们将看到:

INSERT:所使用的是通用图标,生成图形显示计划的逻辑找不到迭代器的合适图标时,将显示通用图标。有下列三种通用图标:蓝色(用于迭代器)、橙色(用于游标)和绿色(用于 Transact-SQL 语言构造)。

表插入(Table Insert):Table Insert 运算符将输入的行插入到 Argument 列指定的表中。Argument 列中还包含一个 SET:() 谓词,指示为各个列设置的值。如果 Table Insert 没有子级插入值,则插入的行是从插入运算符自身获取的。Table Insert 是一个物理运算符。

    4.3、语句:UPDATE [TestDB].[dbo].[Nums] SET n = 1000002 WHERE n = 1000001

选择包括实际的执行计划,我们将看到:

UPDATE:同INSERT。

表更新(Table Update):Table Update 物理运算符用于更新在 Argument 列指定的表中的输入行。SET:() 谓词用于确定每个已更新列的值。可以在 SET 子句中、此运算符内的其他位置以及此查询内的其他位置引用这些值。

前几行(Top):Top 运算符扫描输入,但仅基于排序顺序返回最前面的指定行数或行百分比。Argument 列可以包含要检查重复值的列的列表。在更新计划中,Top 运算符用于强制实施行计数限制。Top 既是一个逻辑运算符,也是一个物理运算符。

表扫描(Table Scan):同上,待条件的表扫描。

    4.4、语句:DELETE FROM [TestDB].[dbo].[Nums] WHERE n = 1000002

选择包括实际的执行计划,我们将看到:

DELECTE:同INSERT。

表删除(Table Delete):Table Delete 物理运算符用于从参数列内所指定的表中删除行。

:所使用的是SQL Server 使用的 Transact-SQL 语言元素(Result)图标,Result 运算符是查询计划结束时返回的数据。它通常是显示计划的根元素。Result 是一个语言元素。
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生