简介
每天,在不同的Microsoft SQL Server讨论版上,同样的问题出现一次又一次:
- 为什么这次查询运行慢了?
- 我的索引用到了么?
- 为什么我的索引没有被用到?
- 为什么这个查询比那次查询快?
- 等等等等
正确的回答在各种情况可能不一样,但是为了回答,你必须每次都问一个同样的问题:你看了执行计划(Execution
Plan)了么?
执行计划显示了SQL
Server背后做了什么。他可以给你提供大量的信息关于你的查询是如何被SQL
Server执行的,包括
- 哪些索引被用到了,以及哪里完全没有索引
- 数据是如何从表中检索和连接的
- GROUP
BY查询中数据是怎么聚集的
- 所有这些操作对系统造成的预期压力(anticipated
load),和估计成本,等等
所有这些信息使得执行计划变成你的工具箱中一个相当重要的工具,无论你是数据库管理员,数据库开发人员,报告编写人员,开发人员,还是任何写TSQL来访问SQL Server的人。
给定这个工具以及工具的重要性,你可能认为有大量的信息关于这个主题。不错,很多不同的地方的确有一些很好的信息,然而,没有一个地方集中了如何使用和翻译执行计划的实践。
这本书就是这个地方。我的目标是尽可能地把各种关于执行计划的有用信息放在一个地方,并且提供清晰的路由指向主题,从捕捉计划的基本开始,通过翻译,然后如何使用他们理解如何优化你的查询,提高你的索引策略等等。
特别的,我覆盖了
·
如何捕获图形执行计划,以及文本执行计划,和XML执行计划
·
一个文档化的方法关于如何翻译执行计划,因此你可以从你自己的代码里创建计划而且使之适用于你自己的环境
·
SQL Server如何在执行计划里表示和翻译通用的SQL
Server对象-索引,试图,派生表等等
·
如何定位通用的性能问题,比如书签查找或未使用的、遗失的索引
·
如何通过提示、执行向导等等来控制执行计划,以及为什么这是双刃剑
·
XML代码是如何出现在执行计划里的
·
高级主题,比如并发、强制参数化以及强制计划
在讲述的过程之中,我还解决了这些主题:SQL Server内部机制,性能调优,索引优化等等。然后,我的关注点始终在执行计划的细节上,以及这些问题是如何在计划中表示的。如果你在找一些信息关于如何优化SQL,或者建立有效的索引,那么你需要找一本关注这些主题的书。但是,如果你想要理解这些问题在一个执行计划中如何表现了,本书就是这个地方了。
posted on 2009-04-14 22:43
Justin Chen 阅读(2282)
评论(0) 编辑 收藏 所属分类:
SQL Server