了解 SQL 服务器中的执行计划
Understanding execution plan in SQL Server
我需要了解如何阅读执行计划,我正在阅读一些文档但对我来说不是很清楚。
如何判断我的查询执行是否正常?
这是什么意思:
This is an example of 1 of my query1
- 嵌套循环
- 合并区间
- 聚集索引查找
- 连接
- 计算标量
- 排序
坦率地说,这被否决了(见我的评论)。但是,明智的做法是阅读 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
对于从业者的指导和讨论:
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/
我需要了解如何阅读执行计划,我正在阅读一些文档但对我来说不是很清楚。
如何判断我的查询执行是否正常?
这是什么意思:
This is an example of 1 of my query1
- 嵌套循环
- 合并区间
- 聚集索引查找
- 连接
- 计算标量
- 排序
坦率地说,这被否决了(见我的评论)。但是,明智的做法是阅读 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
对于从业者的指导和讨论:
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/