代码之家  ›  专栏  ›  技术社区  ›  Abe Miessler

SQL Server索引问题

  •  1
  • Abe Miessler  · 技术社区  · 15 年前

    为特定查询创建索引时,最好对WHERE子句中的所有列编制索引,然后在“包含的列”部分中选择任何列吗?我应该把位列从索引中去掉吗?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Andrew    15 年前

    有点经典的“视情况而定”。如果将它们包括在内,那么您将创建一个覆盖索引,这将更有效,但同样,您将在行插入、删除和某些更新上受到惩罚。

    您还需要为磁盘空间付出代价,因此,如果要在大表中包含非常宽的列,则需要平衡存储开销的增加与性能的提高。

    在所有条件都相同的情况下,覆盖指数通常是一件好事,但也有一些注意事项,如空间和其他操作的开销。

        2
  •  4
  •   Remus Rusanu    15 年前

    这要看情况而定。有许多因素在起作用:索引大小、列选择性、查询频率、更新率等。没有一般规则来添加或添加位列,答案总是特定于特定的问题。