可以依靠SQL Server调优顾问来生成索引吗?

时间:2009-12-15 19:05:05

标签: sql sql-server performance

我一直在分析我的查询并将推荐推迟一段时间。这样做有什么潜在的陷阱吗?我会更好地手工创建自己的索引吗?

4 个答案:

答案 0 :(得分:6)

是否应该盲目相信DTA建议并实施所有建议而不考虑其影响?不应该忽略DTA并从头开始分析一切吗?没有.DTA(或者它后来的化身被称为)它是一种工具。像任何其他工具一样,你是如何使用它的......

调整顾问将根据您提供的工作量提供建议。作为一般规则,DTA建议是高质量和可靠的建议。 DTA无法就其他类型的工作负载提供建议,而这些工作负载并未针对分析重放进行捕获。它无法就添加额外索引对存储容量和长期保留策略的影响提供建议。它无法检测到愚蠢的查询,它会建议改进那些愚蠢的查询的访问路径,但是智能的人工分析可能会提供改进查询语法或重新定义需求的建议。

对于沉浸在项目中数月并且每天使用项目数据架构和查询的人来说,DTA 应该不会显示任何意外。所以可以说在这种情况下这是一个超级丰富的工具。但我要说它仍然应该完全用于验证,它不会给出任何新的建议。

答案 1 :(得分:2)

调优向导可以很好地处理许多查询,但仍然有很多失败模式。没有什么比人类大脑更能评估最佳查询计划和实现它所需的指标。如果有一个热点,那么根据我的经验,调整向导通常会变得毫无用处。

答案 2 :(得分:2)

这不容易回答,调优顾问可以使用非常科学的方法创建索引,让您接近您可能想要的东西 - 但它对于它认为需要什么并且无法实现优化的跳跃是非常科学的你可以练习。

索引创建和性能调整在某种程度上既是一门艺术也是一门科学,所以虽然它为你提供了问题所在的科学开端,但如果不先审查每一个建议并检查它是否真的是什么,我就永远不会实现它们。我想,或者我是否能想出更好/更合适的方法。

答案 3 :(得分:2)

即使您运行顾问程序,如果要将数据库对象放入源代码控制中,您也需要编写脚本来创建索引,而不仅仅是为它们创建索引。我需要用于源代码控制和部署的脚本,因为我们不允许将任何其他方式将数据库更改部署到生产中。虽然您可以在开发更改后编写脚本,但为什么在创建索引代码如此简单时会烦恼?