了解 SQL 服务器中的执行计划

Understanding execution plan in SQL Server

我需要了解如何阅读执行计划,我正在阅读一些文档但对我来说不是很清楚。

如何判断我的查询执行是否正常?

这是什么意思:

This is an example of 1 of my query1

  1. 嵌套循环
  2. 合并区间
  3. 聚集索引查找
  4. 连接
  5. 计算标量
  6. 排序

坦率地说,这被否决了(见我的评论)。但是,明智的做法是阅读 Microsoft 关于基于成本的优化器的 Technet 文章,其中涵盖了您所询问的内容。

我要说的是,根据我的经验,如果执行计划推荐一个索引,那么我建议您认真考虑它,因为性能提升通常会实现,即使该索引几乎没有意义(即 SQL 服务器非常好,但并不完美,知道它想要什么)。现在,如果您添加了一个索引并且执行计划推荐了另一个索引,那么您可能需要考虑查看要返回的列;你是如何加入的; and/or 你的 table 设计。

最终,您试图让执行计划显示聚簇索引查找(最佳),然后是聚簇索引扫描(OK)、索引查找、索引扫描,并避免 table 扫描(即堆).当然,这是我个人的看法。

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/