SQL SERVER 圖形執行計畫中的表徵圖學習(1)

來源:互聯網
上載者:User

 

SQL SERVER 圖形執行計畫中的表徵圖學習(1)

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

:所使用的是SQL Server 使用的 Transact-SQL 語言元素(Result)表徵圖,Result 運算子是查詢計劃結束時返回的資料。它通常是執行程序表的根項目。Result 是一個語言元素。

表掃描(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 物理運算子用於從參數列內所指定的表中刪除行。

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.