我一直在我们的 MS SQL 数据库上运行一个自动索引工具(我修改了一个源自 Microsoft 的脚本,该脚本查看索引统计表 -自动自动索引)。从统计数据中,我现在有一个需要创建的索引的建议列表。
编辑: 上述索引从 DMV 获取信息,这些信息告诉您数据库引擎将用于索引的内容(如果它们可用),并且脚本采用 Top x 推荐(通过搜索、用户影响等)并将它们放在表中。
(上面的编辑部分摘自 Larry Coleman 的回答,以阐明脚本在做什么)
由于我是数据库管理员的新手,并且在网上进行了快速搜索,因此我不愿意冒险并盲目添加推荐的索引。但是,由于没有在该领域的经验,我正在寻找一些关于如何确定这些建议是否必要的建议。
我是否需要运行 SQL Profiler,还是检查查询表的代码更好?你还有什么建议吗?
时不时地运行 Microsoft SQL Server Profiler,它建议我创建一堆新的索引和统计信息(“... 97% 估计改进...”)。
根据我的理解,每个添加的索引都可以使 SQLSELECT查询更快,但也会使UPDATEorINSERT查询变慢,因为必须调整索引。
我想知道的是,我什么时候有“太多”的索引/统计信息?
也许对此没有明确的答案,但有一些经验法则。
显然,保留几个不同的索引会对插入和删除性能产生负面影响。查询性能如何:在表上保留太多索引是否有意义?在任何情况下,如果添加索引(当然对于使用索引的查询),查询性能是否会提高,或者甚至有可能因索引过多而导致查询性能下降,因为有必要查阅所有索引以获得结果?
如果表上有不同的索引:它们会被全部考虑,还是仅从优化器的角度来看是最好的?Oracle 是否实现了多维索引?
我是这家公司的新 DBA。我看到他们的一些表有很多索引;例如,有些超过 50 或 60。
这是一件好事吗?从我的研究来看,这似乎对性能不利。
你会如何处理这个?
我想删除所有索引并从 0 开始。我认为开发人员一直在使用 Tuning Advisor 并没有真正了解索引。