以下是该方案:
我使用DTA查找的三个事件(更别提这个)在最大服务器负载期间运行了几个小时的跟踪。然后我停止并将此探查器加载到DTA。它进行调整工作,并提供有关需要放置哪些索引的反馈。
以下是问题:
有几个(最多15个)不同的索引建议用于单个表。如果我让DTA做它的工作,这是否意味着要为此创建几个索引?这不会成为问题吗?
答案 0 :(得分:1)
DTA在许多情况下都是合理的,但它并不总能提出最佳建议。重叠是很常见的,将聚簇索引复制为非聚集索引(!)。
如果您想更准确地手动执行此操作:MS SQL Server 2008 - How Can I Log and Find the Most Expensive Queries?
答案 1 :(得分:0)
在不了解表,查询或索引的情况下,答案必须是“它取决于”......
您需要将DTA的输出作为起点。如果查看建议的索引,可能会发现它们之间存在一些重叠,以减少索引的数量。
答案 2 :(得分:0)
SQL Server的优化很复杂,并且依赖于严重数据库中的数据。确定影响更改的唯一真正方法是使用代表性数据(最好是实时数据库的备份)对数据库执行性能和负载测试
也就是说,15个索引对我来说似乎很多 - 大量索引可能会对该表的写入速度产生不利影响。 DTA可能单独针对该表运行每个查询,并为每个查询提供最佳索引。您可能会发现可以通过创建适合多个查询的索引来减少索引数量 - 这可能意味着某些查询略微慢于所有15个索引,但是您可能会能够获得99%的改善。
答案 3 :(得分:0)
查找查询结构发生更改的所有位置,以便对现有索引或建议索引的一小部分起作用。