如何知道何时/是否有太多索引?

Uwe*_*eim 26 performance index sql-server index-tuning

时不时地运行 Microsoft SQL Server Profiler,它建议我创建一堆新的索引和统计信息(“... 97% 估计改进...”)。

根据我的理解,每个添加的索引都可以使 SQLSELECT查询更快,但也会使UPDATEorINSERT查询变慢,因为必须调整索引。

我想知道的是,我什么时候有“太多”的索引/统计信息?

也许对此没有明确的答案,但有一些经验法则。

Nic*_*mas 26

您的负载配置文件是回答此问题的最重要因素。

  • 如果您的负载是读取密集型的,您希望索引满足您最繁重或最频繁的查询。

  • 如果您的负载是写入密集型的,请仔细索引。例如,索引可以满足一个 seek 和 UPDATE 的需求,以及你的一两个最昂贵的 SELECT。

  • 如果您的负载是 OLAP 负载,请谨慎索引,因为无论如何您都将扫描目标表。

你怎么知道你有太多的索引?

  • 当您可以看到其中一些未被任何查询使用时。

  • 频繁的 DELETE、UPDATE 或 INSERT 显示了一个查询计划,该计划涉及多个昂贵的索引更改(即非聚集索引insertupdatedelete)。使用您的判断来确定对这些 DML 语句的惩罚是否值得您从必须更新的索引中获得的收益。


mrd*_*nny 8

如果您有正在维护但从未使用(或很少使用)的索引,那么您的索引太多了。如果您的所有索引都用于提高用户性能,那么您的索引不会太多。


归档时间:

查看次数:

20910 次

最近记录:

5 年,7 月 前