以下是场景:
在最大服务器负载期间,我使用DTA查找的三个事件(别管这个)运行了几个小时的跟踪。然后,我停下来并将这个分析器加载提供给DTA。它完成自己的调优工作,并向我反馈需要放入哪些索引。
下面是问题:
多个(最多15个)不同的索引建议用于单个表。如果我让DTA来做它的工作,这是否意味着要为此创建几个索引?这不会是个问题吗?
发布于 2010-01-05 21:50:24
SQL server的优化是复杂的,并且在很大程度上依赖数据库中的数据。确定更改将产生影响的唯一真正方法是使用代表性data对数据库执行性能和负载测试(最好是实时数据库的备份)
也就是说,15个索引对我来说似乎很多-大量的索引可能会对针对该表的写入速度产生有害的影响。DTA可能已经针对该表单独运行了每个查询,并为每个查询提供了最佳索引。你可能会发现,通过创建适合多个查询的索引来回收索引的数量是可能的-这可能意味着一些查询的比所有15个索引的速度稍微慢一些,但是你有可能获得99%的改进。
发布于 2010-01-05 21:42:54
DTA在许多情况下都是合理的,但它并不总是给出最优的建议。重叠非常常见,将聚集索引复制为非聚集索引(!)也很常见。
如果您想更准确地手动完成此操作:MS SQL Server 2008 - How Can I Log and Find the Most Expensive Queries?
发布于 2010-01-05 21:39:28
在不了解表、查询或索引的情况下,答案必须是“视情况而定”……
您需要将DTA的输出作为起点。如果您查看推荐的索引,您可能会发现它们之间存在一些重叠,以减少索引的数量。
https://stackoverflow.com/questions/2006300
复制相似问题