狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

sqlserver 執行計劃

freeflydom
2023年7月26日 8:49 本文熱度 567

官方文檔


想復雜的事情簡單說,在看執行計劃的其他文章的時候,發現直接上很復雜的DDL腳本來講解,這樣子可能打開就沒有興趣往下看了。所以這里用了一個最簡單的select語句進行說明引新入門。


打開

注意這三個【L型圖標】,可以把鼠標移動到按鈕上方可以顯示【解釋文字】。


圖中從左到右分別為【顯示估計的執行計劃】【包括實際的執行計劃】【包括實時查詢統計信息】。


【顯示估計的執行計劃】是執行某個DDL的估計值。


【包括實際的執行計劃】【包括實時查詢統計信息】都是執行實際的值,所以你選擇后,它會在下次執行后出執行結果。


 




結果分析

這是一個簡單的查詢,鼠標點擊圖片中的圖片或線上都有驚喜(大量細節信息展示)。執行計劃可以通過“另存”操作將某一次結果保留下來,方便與日后進行結果對比。


除了圖標外,線的粗細代表涉及到的數據量的大小,越粗代表數據量越大。


 




執行計劃元素列表如下:

 


執行計劃元素列表解釋請參考:

Graphical execution Plan Icons (SQL Server Management Studio)

看懂SQL Server執行計劃



結果細節圖

 

   





其中,第三個圖中的屬性Ordered是與order by相關。如下面兩個腳本:


select * from vvtest order by id;

select * from vvtest

兩個執行計劃的結果如下:


  




 


所謂數據訪問就是直接訪問數據,可以是訪問一個表也可以是訪問一個索引。


通常有兩種方法:一種是掃描(scan)一種是查找(seek)。


scan就是讀取整個結構,可以訪問一個heap或者一個clustered索引或者一個non-clustered索引。

seek不會讀取整個結構,他則是更高效地通過索引訪問一行,所以從這個角度來看,查找就只能應用在索引上面了。簡單總結如下表所示:

首先分析最右邊的Table Scan。這是sqlserver 查詢數據的方法。sqlserver 數據查詢方式一共有五種:


1. 【Table Scan】:遍歷整個表,查找所有匹配的記錄行。這個操作將會一行一行的檢查,當然,效率也是最差的。

2. 【Index Scan】:根據索引,從表中過濾出來一部分記錄,再查找所有匹配的記錄行,顯然比第一種方式的查找范圍要小,因此比【Table Scan】要快。

3. 【Index Seek】:根據索引,定位(獲取)記錄的存放位置,然后取得記錄,因此,比起前二種方式會更快。

4. 【Clustered Index Scan】:和【Table Scan】一樣。注意:不要以為這里有個Index,就認為不一樣了。 其實它的意思是說:按聚集索引來逐行掃描每一行記錄,因為記錄就是按聚集索引來順序存放的。 而【Table Scan】只是說:要掃描的表沒有聚集索引而已,因此這二個操作本質上也是一樣的。

5. 【Clustered Index Seek】:直接根據聚集索引獲取記錄,最快!


所以總體來講,在查詢結果集是相同數量的情況下,查詢速度排序為5>3>2>4>1。


一般而言,在性化時可以看到執行記錄時是不是【Table Scan】或者【Clustered Index Scan】,如果是,可以通過增加或修改索引類型進行效率上的對比。


Lookup類型


Bookmark Lookup、RID Lookup、Key Lookup。


Bookmark Lookup和Key Lookup是一個意思,等價。


如果表沒有創建聚集索引則稱為Bookmark Lookup,如果表中沒有聚集索引但是存在非聚集索引我們稱為RID Lookup。


為什么突然扯了一嘴Lookup呢?因為Lookup其實就是與執行計劃里的scan或index相關。如果聚集索引命中就是指Bookmark Lookup——聚集索引命中的時候,很大概率是索引不能帶出select所需的某一部分字段或者是全部字段,所以需要先命中一行,然后把某一行的數據全帶出來。非聚集索引命中就是指RID Lookup。


SQL SERVER如何選擇執行計劃

sqlserver選擇某個執行計劃,執行計劃用某個索引,是這有一個權重判斷的。這個權重在執行前都計算出來了。

那怎么查看呢——通過【索引統計信息】。在執行腳本的過程中,sqlserver會根據這些統計信息,選擇一個它認為是最合適的方法去執行查詢過程。統計信息可以自動定時更新,在SQL Server中也有個參數來控制這個更新方式。


 




語法

DBCC SHOW_STATISTICS ("Person.Address", AK_Address_rowguid);


這里的引號很重要,沒會報錯。


主要有兩個參數:


第一個:是表名或者是索引視圖名(給視圖加的索引)


第二個:索引名、列名、統計信息。


結果屬性介紹

索引前綴集是什么?索引前綴和前綴索引不是一個東西。


索引前綴是指索引的選擇性——根據索引定義時的字段順序來決定索引是否被命中。如果是索引(a,b,c),命中查詢的時候是查詢條件中有(a) (a,b) (a,b,c)進行命中,但是(b,c)這個查詢條件不會命中該索引。所以索引前綴也叫索引列前綴集。


前綴索引說白了就是對文本的前幾個字符(具體是幾個字符在建立索引時指定)建立索引,這樣建立起來的索引更小,所以查詢更快。


 


   

 


執行計劃詳細屬性介紹

 




在執行DDL之前,輸入一句set statistics profile on 。顯示一個表格,表格內是比圖上更細節的實際的執行信息。針對這個表的屬性做一個整理解析。

 

 



 

原文鏈接



該文章在 2023/7/26 8:49:40 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved