繁体   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