我们可以完全依赖数据库引擎优化顾问吗?

时间:2015-07-29 21:07:35

标签: sql-server indexing

我读过有关数据库引擎优化顾问以及它如何为给定查询建议索引的内容。我的问题是,在创建索引时,我可以完全依赖这些建议吗?

2 个答案:

答案 0 :(得分:4)

绝对不是。数据库引擎优化顾问的范围非常有限,仅推荐特定工作负载的索引。但实际工作量可能会有所不同。

例如,DTA会针对特定查询推荐index1。但是说该表是大量数据修改的目标,因此与从更重要的工作负载维护index1数据修改所带来的开销和性能影响相比,index1的优势非常小。 (这只是一个例子,但是应该用来说明索引的霰弹枪方法如何让你陷入困境)

将DTA的建议视为...... 建议。在实际的生产等效工作量中测试推荐的索引的尽职调查是无可替代的。

答案 1 :(得分:2)

数据库调优顾问可以用于调优特定查询或大量查询。

<强> 但是

请注意,在表上抛出一堆索引可以帮助执行一个查询,同时损害另一个查询的性能。此外,表具有的索引越多,写入所需的时间就越长,因为必须写入多个索引。

如果你有特别长时间运行的查询,你可以参考调优顾问的建议(但试着理解它为什么建议它们,然后再将它们扔到桌子上)。

另一个(可能)不错的功能是为顾问程序提供解析的跟踪文件。如果您能够获得“类似生产”的跟踪,那么可能会为您提供有利的索引来投放多个表。通过“喜欢生产”,我的意思是,如果你能在很长一段时间内获得代表生产行为的痕迹。一种选择是追踪生产(看看为什么这可能是一个坏主意https://dba.stackexchange.com/questions/818/using-sql-profiler-on-a-database-thats-in-production)......但要小心,这可能是非常沉重的。这是一个关于如何在不使用UI的情况下进行更小尺寸跟踪的教程:http://tranpeter.blogspot.com/2013/10/sql-server-proffer-offline.html