查看 SQL Server 查询的执行计划是一回事,而明白它们的含义却是另一回事。Grant Fritchey 的书:编写高性能 SQL 代码的艺术的第一部分就详述了 SQL Server 的执行计划,这对你会很有帮助。
本书首先概览了执行计划。大多数同类书籍的第一章尽是些没用的东西,而本书则不然,它一开始就介绍了何时会重新编译执行计划、为何一些查询有两个执行计划等等。
第二章非常有价值。你会发现 hash map join 与 nested loop join 的区别,同时也可以判定出哪个更好一些。但这都不是完全绝对的:某些操作对于大表表现的很棒,然而对于小表就不那么让人满意了,反之亦然。与此同时,本章还就为何某些操作可能会引起查询或表设计上的一些问题给出了很多建议。
第三章谈到了如何读取基于文本和 XML 的执行计划。如果不喜欢一上来就看到这么多的 XML,你可以跳过这章。接下来的一章解释了执行计划,这次谈到了更复杂的一些内容,如 Common Table Expressions。
对 query hint 使用不当可能会导致很严重的后果,但它们也可以解决优化器的 bug 所导致的性能问题。因此我推荐每个人都来读一下 Fritchey 的书中关于 query hint 这一章。尽管大多数开发者不会使用到它们,但了解一下终究是有好处的。
本书的其他部分涵盖了一些高级主题,如游标、XML 查询、parallelism 及计划指南(plan guides)。计划指南是个好东西,凭借它你可以在存储过程(你可以修改存储过程,也可以 ad-hock 应用创建的查询)中使用 query hint。
可以在这里免费下载编写高性能SQL 代码的艺术这本书,也可以从SQL Server Central 上购买。Red Gate 还在大会上给出了该书的打印版。
评论