在优化SQL性能的时候,经常用到的就是查看执行进化,最简单的无非是“Ctrl + L”来查看执行计划,不过初次看到这个界面的朋友可能会有无从下手的感觉,SQL Server用图标的方式将我们的SQL语句执行过程展示了出来。
首先,我们需要了解的是各个图标的意思,限于篇幅,这里就不详述了,点击查看MSDN官方解释。
其次,当我们将鼠标移到各个图标上面的时候,会出现一些数据,这些数据的解释如下(点击查看MSDN说明):
工具提示项 | 说明 |
---|---|
Physical Operation | 使用的物理运算符,例如 Hash Join 或 Nested Loops。以红色显示的物理运算符表示查询优化器已发出警告,例如丢失列统计信息或丢失联接谓词。这可能导致查询优化器选择比预期的效率低的查询计划。有关列统计信息的详细信息,请参阅使用统计信息提高查询性能。 当图形执行计划建议创建统计信息、更新统计信息或创建索引时,使用 SQL Server Management Studio 对象资源管理器中的快捷菜单可以立即创建或更新丢失的列统计信息和索引。有关详细信息,请参阅索引操作指南主题。 |
Logical Operation | 与物理运算符匹配的逻辑运算符,如 Inner Join 运算符。逻辑运算符列在物理运算符之后,两者均位于工具提示的顶部。 |
Estimated Row Size | 操作符生成的行的估计大小(字节)。 |
Estimated I/O Cost | 用于执行操作的所有 I/O 活动的估计开销。此值应尽可能低。 |
Estimated CPU Cost | 用于执行操作的所有 CPU 活动的估计开销。 |
Estimated Operator Cost | 用于执行此操作的查询优化器的开销。此操作的开销以占查询总开销的百分比的形式显示在括号中。由于查询引擎选择最高效的操作来执行查询或执行语句,因此此值应尽可能低。 |
Estimated Subtree Cost | 查询优化器执行此操作及同一子树内位于此操作之前的所有操作的总开销。 |
Estimated Number of Rows1 | 运算符生成的行数。 |