程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 使用查詢分析器調整SQL服務器腳本

使用查詢分析器調整SQL服務器腳本

編輯:關於PHP編程

我喜歡把SQL服務器所捆綁的工具看作是倒金字塔型的,診斷和檢查一般問題的工具在頂端,尋找和診斷問題具體區域的工具在底部。除了提供一種編寫SQL腳本的便捷方式之外,在你需要解決特定SQL腳本裡明確問題的時候,查詢分析器(Query Analyzer)還是所需要使用的資源。如果你需要指出哪個查詢正在保持著某個特定表格的鎖定狀態,你也會希望使用查詢分析器。
查詢分析器的關鍵診斷特性是它能夠顯示某個查詢的執行計劃。這個執行計劃會向你提供各種類型的有用信息,例如在查詢的執行期間如何以及何時使用或者不使用索引。它還會提供許多其他的細節,例如排序、平行(parallelism)、嵌套循環,以及SQL服務器在執行指定查詢時必須做的其他事情。
 
計劃的好處
有了查詢分析器,你就可以查看預計計劃而不需要運行查詢本身,或者在查詢執行之後查看真實的計劃。很顯然,真實的計劃會更加准確,因為它是從物理上對數據庫運行查詢的。但是對於系統負載巨大和/或長期的查詢,這種方法可能就不是最好的選擇了。在典型情況下,當我認為某個特定的查詢有問題的時候,或者如果我預計有一個查詢會在應用程序裡被足夠頻繁地調用以至於可能會導致性能問題的時候,我就會運行這個工具。
你可以通過把SQL表達式輸入查詢分析器再按[Ctrl]L來查看預計的執行計劃。執行計劃然後就會顯示在結果(Results)面板的選項卡裡。執行計劃在剛開始的時候可能比較難讀,因為它不像英語一樣是從左往右讀的,而是從右往左讀的。
運行中的計劃
這裡有一個你可以跟著做的例子,從這個例子裡你可以看到如何使用查詢分析器來查看一個執行計劃。考慮一下下面查詢,它會從Northwind數據庫裡返回某個雇員所在的地點和相關地區:

SELECT
TerritoryDescription, RegionDescription
FROM
Employees e
JOIN EmployeeTerritories et ON e.employeeid = et.employeeid
JOIN Territories t ON et.territoryid = t.territoryid
JOIN Region r ON t.regionid = r.regionid
WHERE
e.employeeid = 1
ORDER BY
TerritoryDescription, RegionDescription

這個查詢的結果顯示:一號EmployeeId在東部(Eastern)有兩個地區,如圖A所示。

圖A


查詢結果

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved