簡體   English   中英

了解 SQL 服務器中的執行計划

[英]Understanding execution plan in SQL Server

我需要了解如何閱讀執行計划,我正在閱讀一些文件,但對我來說並不清楚。

如何判斷我的查詢是否執行正常?

這是什么意思:

這是我的查詢 1 的示例1

  1. 嵌套循環
  2. 合並區間
  3. 聚集索引查找
  4. 級聯
  5. 計算標量
  6. 種類

坦率地說,這被否決了(見我的評論)。 但是,您最好閱讀 Microsoft 的 Technet 關於基於成本的優化器的文章,該文章涵蓋了您所詢問的內容。

我會這么說,根據我的經驗,如果執行計划推薦一個索引,那么我建議你認真考慮它,因為性能提升通常會實現,即使索引幾乎沒有意義(即 SQL 服務器很好,但是不完美,知道自己想要什么)。 現在,如果您添加一個索引並且執行計划推薦了另一個索引,那么您可能需要考慮查看您返回的列; 你是如何加入的; 和/或您的餐桌設計。

最終,您試圖讓執行計划顯示聚集索引查找(最佳),然后是聚集索引掃描(OK)、索引查找、索引掃描,並避免表掃描(即堆)。 當然,這是我自己的看法。

https://technet.microsoft.com/en-us/library/2007.11.sqlquery.aspx

其他輕讀:

http://www.dbjournal.ro/archive/16/16_4.pdf

https://nirajrules.wordpress.com/2009/06/10/cost-based-optimization-cbo-vs-rule-based-optimization-rbo/

對於從業者指南和討論:

http://logicalread.com/sql-server-primary-key-vs-clustered-index-part-1-mb01/

http://logicalread.com/sql-server-primary-key-vs-clustered-index-part-2-mb01/

http://logicalread.com/sql-server-primary-key-vs-clustered-index-part-3-mb01/

馬克荷馬在這里有一個很好的答案:

https://meta.stackoverflow.com/questions/382341/how-to-include-an-sql-server-execution-plan-to-a-stack-overflow-question

Brent Ozar 網站的鏈接非常有用。 當您抓取計划時,請記住在運行之前將 SET STATISTIC XML ON 並在查詢結束時將其設置為 OFF 以獲得更准確的計划。

布倫特的網站:

https://www.brentozar.com/pastetheplan/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM