我正在审查一个SQL Server 2008 R2实例,其中有30多个数据库,目标是迁移到SQL Server 2014。在回顾这篇文章时,我发现了一个以前的员工实现的SQL作业。该作业利用本文https://www.sqlservercentral.com/forums/topic/indexing-views-1中的一组脚本,每半小时24小时自动创建和删除所有推荐的索引。当这个实现的时候,数据库大约是40gb,但后来增长到超过1TB,因为我们是一个高度事务性的公司。其中一个数据库运行我们的主要ERP/订购系统。从我对索引的理解来看,这似乎是一个糟糕的想法,因为它可能会在非常大的表上创建和删除索引。这是一个好的练习吗,我错过了什么吗?
在相关文章中找到
"如何使用?运行自动索引。安装sp和sql agent的工作。每隔30分钟,sql代理作业将运行自动创建索引和自动删除索引脚本提出建议。相同推荐不会被存储多次,而是我们只是偶然的增加计数并更改最新推荐时间。你可以查看中使用简单命令的建议viewrecommendations.sql。寻找推荐在高计数的推荐表,这意味着它们已经因此,重复推荐更有价值。你也可以看看初始推荐时间和最后推荐时间为了解一下这个建议的新鲜度和时间范围有效。在你决定实施一项建议之后,只需运行execute_recommendation,其中包含推荐id和推荐将自动执行。"谢谢你Snehal
链接在这里
根据该用户,你的系统中的脚本应该只是随着时间的推移汇总索引推荐,并允许你也看到不断被推荐的索引。
我认为这里重要的区别是SQL不记录它建议一个特定索引的次数,所以你可能会得到一个基于一次性查询的建议索引,这可能不是你想要实现的。相反,您可以运行一段时间,查看频繁被访问的内容并创建这些索引。