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