我经常使用索引,但在某些情况下我仍然很难知道它们是在帮助还是在伤害。我遵循了一些指导方针,但我不确定它们是否好,也不确定它们的合理性。
在窄数据类型上创建索引比在宽数据类型(例如INT
over DATETIME
)上创建索引要好。
在多列上创建索引比在单列上创建更好。
最好在从未(或很少)更新的列上创建索引,而不是为频繁更改的列创建索引。
这些是好的指导方针吗?由于我不完全确定我为什么要遵循这些准则,您能否帮助解释每个准则的合理性以及它们何时不适用?
其他要点(如前所述,“我如何建立索引?”是一本书的主题,而不是一篇文章的主题 - 而且,许多答案都归结为“这取决于您的数据库和工作负载”):
与往常一样,最好的索引策略是分析数据库所承受的工作负载并建立适合该工作负载的索引。如果您正在为数据仓库建立索引,那么您的索引将与审计历史数据库上的索引完全不同。