为特定查询创建索引时,最好是索引where子句中的所有列,然后在“包含列”部分中选择任何列?我应该将位列留在索引之外吗?
答案 0 :(得分:4)
总是取决于。有许多因素在起作用:索引大小,列选择性,查询频率,更新率等。没有通用规则来添加位列添加或添加它们,答案总是特定于特定问题。
答案 1 :(得分:1)
经典的“它取决于”。如果你包含它们,那么你正在创建一个覆盖索引,这将更有效,但同样,你会在行插入,删除和一些更新时受到惩罚。
您还需要为磁盘空间付出代价,因此,如果要在大型表上包含非常宽的列,则可以平衡存储开销与性能增益的增加。
在所有条件相同的情况下,覆盖索引通常是一件好事,但是有一些警告,例如其他操作的空间和开销要注意。