识别所需索引的工具


8

我想为数据库中的每个表创建最佳索引。SQL Server中是否有查询或工具可以帮助完成此过程?


1
有建议的索引,但是这些索引非常有限,并且仍然应该由知道他们在做什么的人进行评估。您是否有关于索引的特定问题?
JNK 2012年

1
有没有性能不好的查询/表?正如JNK所暗示的那样,您实际上仅应在知道自己在做什么时才添加索引(并对其进行测试)。除非您有理由相信表需要索引(巨大的表,慢查询,明显的聚集索引),否则您不应该只是尝试添加它们
Ben Brocka 2012年

Answers:


10

是的,有一些工具,例如数据库引擎优化顾问。它与SQL Server一起提供,并且做一些非常讨厌的事情:

  • 它只允许您考虑很小的工作量(甚至是单个查询)。然后,这将建议仅对较小的工作负载有帮助的索引,而与其余工作负载无关(索引有助于加快某些查询的速度,但它们可以减慢其他查询的速度,尤其是插入/更新/删除),其余的都没关系商业周期。
  • 它通常会建议仅在尾随列或包含列之间有所不同的冗余索引。
  • 它确实非常喜欢包含的列-我认为这可能是一种恋物癖。

索引调整的正确方法是在一个完整的业务周期中考虑您的整个工作负载。有时候,转向第三者的工具比重新发明轮子要好。DBSophic提供了一个免费的产品Qure Workload Analyzer,我认为它比DTA的工作要好得多-但是他们的许可工具(Qure Workload Optimizer)在其工作方面绝对是惊人的。去年,我在博客中介绍了该工具与SQL Sentry集成时的工作方式

还有其他一些选项,例如DMV中报告了丢失的索引,并且您还可以发现正在写入哪些索引(因此它们占用了空间并影响了插入/更新/删除操作),但从未(或很少) )供用户查询使用:

但是,这些还需要警告:DMV仅自上次SQL Server重新启动以来才有效,并且它们不一定涵盖适当的业务周期(因此可能会丢失重要信息)


7

您正在谈论的工具称为数据库引擎优化顾问(简称DTA)。它可能需要大量输入,并就缺少索引等问题提供建议。但是,值得注意的是,这些只是建议,应谨慎考虑,而不是盲目遵循DTA的建议。

DTA教程链接

还值得注意的是,有内置的DMV用于收集此类信息:

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.