了解Sql Server的执行计划
前一篇總結了Sql Server Profiler,它主要用來監控數據庫,并跟蹤生成的sql語句。但是只拿到生成的sql語句沒有什么用,我們可以利用這些sql語句,然后結合執行計劃來分析sql語句的性能問題,這才是我們的最終目的,那么如何使用執行計劃呢?我準備從以下幾點來總結。
如何啟動執行計劃
運行一條sql,并且在工具欄中選中'Include Actual Execution Plan'按鈕,此時就啟動了執行計劃,如下圖。
Sql語句:
USE TSQLFundamentals2008; GO-- 查詢2006年7月1日到2007年7月31日的所有訂單,并按requireddate字段排序 SELECT orderid,orderdate,requireddate,shippeddate,shipname,shipaddress FROM Sales.Orders WHERE orderdate>='20060701' AND orderdate<'20070801' ORDER BY requireddate;執行查詢,可以在結果欄中看到執行計劃結果,如下圖。
執行計劃結果要看什么
執行計劃結果出來了,那我們要怎么看呢?一般我們只需關注以下幾個參數。
Sql Server的五種查詢方式
? 要了解Sql Server的五種查詢方式之前,我們要弄明白兩個概念,Sql Server中的兩種索引,聚集索引和非聚集索引。【聚集索引】直接決定了記錄的存放位置,或者說,根據聚集索引可以直接獲取到該記錄,一般我們表的主鍵都是用聚集索引?!痉蔷奂饕縿t保存了二個信息,1.相應索引字段的值。2.記錄對應聚集索引的位置(如果表沒有聚集索引則保存記錄指針)。因此,如果能通過聚集索引來查找記錄,則速度是最快的。
下面是Sql Server查詢數據的五種方式,這對我們理解執行計劃非常重要。五種方式如下。
當我們查看執行計劃結果的時候,如果看到【Table Scan】,說明這個表沒有建立任何索引,包括聚集索引。但往往看到更多的是【Clustered Index Scan】,表示該查詢還是掃描了速個表,只不過是按聚集索引,實際效果還是和【Table Scan】沒什么區別,因此,這時候我們可能要考慮建立'組合字段索引'。
查看更具體的執行過程
能過執行計劃的結果圖我們只能看出哪一塊比較耗時,但是看不到Sql Server具體是怎么執行的。為了看得更明白,我們可以通過一條sql命令來查看,如下代碼。
SET STATISTICS PROFILE ON;執行結果除了返回數據集和執行計劃外,還返回了一個表顯示具體的執行過程,如下圖。
這個結果我們重點要關注以下幾點:
參考資料
1,Fish Li的?看懂SqlServer查詢計劃
2,田園里的蟋蟀的?程序員眼中的 SQL Server-執行計劃教會我如何創建索引?
轉載于:https://www.cnblogs.com/mcgrady/p/4174185.html
總結
以上是生活随笔為你收集整理的了解Sql Server的执行计划的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: flume与Mosquitto的集成
- 下一篇: javascript 的默认对象
