學習如何看懂SQL Server執行計划(一)——數據查詢篇


一、數據查詢部分

1、 看到執行計划有兩種方式,對sql語句按Ctrl+L,或按Ctrl+M打開顯示執行計划窗口每次執行sql都會顯示出相應的執行計划

2、 執行計划的圖表是從右向左看的

3、 SQL Server有幾種方式查找數據記錄

[Table Scan] 表掃描(最慢),對表記錄逐行進行檢查

[Clustered Index Scan] 聚集索引掃描(較慢),按聚集索引對記錄逐行進行檢查

[Index Scan] 索引掃描(普通),根據索引濾出部分數據在進行逐行檢查

[Index Seek] 索引查找(較快),根據索引定位記錄所在位置再取出記錄

[Clustered Index Seek] 聚集索引查找(最快),直接根據聚集索引獲取記錄

(如果有些sql執行很慢可以看一下執行計划是否包含太多“掃描”操作,如果有可以考慮為這些字段建立索引,建立索引切記不要再經常有更新操作的字段上建立,每次更新都會導致重建索引的操作,也會影響性能,0或1這種標識狀態的字段因為大部分數據都是一樣的建立索引也沒有什么作用)

(索引就兩種,1是聚集索引,2個非聚集索引,聚集索引每張表只能有一個,非聚集索引每張表可以有多個,主鍵Id就是典型的聚集索引,聚集索引是順序排列的類似於字典查找拼音a、b、c……和字典文字內容順序是相同的,非聚集索引與內容是非順序排列的,類似字典偏旁查找時,同一個偏旁‘馬’的漢字可能一個在第10頁一個在第100頁)

4、  

⑴沒有主鍵的表查詢[表掃描]

⑵有主鍵的表查詢[聚集索引掃描]

⑶建立非聚集索引的表查詢[索引掃描+書簽查找]

書簽查找:通過非聚集索引找到所求的行,但這個索引並不包含顯示的列,因此還要額外去基本表中找到這些列,所以要進行鍵查找,如果基本表在堆中則Key Lookup會變成RID查找,這兩個查找統稱為書簽查找。

⑷建立非聚集索引並把其他顯示列加入索引中[索引查找]

⑸建立非聚集索引並把其他顯示列加入索引中並把聚集索引列當作條件[聚集索引查找]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM