非聚集索引优于主键(聚簇索引)的优点是什么

时间:2010-11-25 09:59:01

标签: sql sql-server-2005

我有一个表(存储论坛的数据,通常意味着没有编辑和更新只是插入),我有一个主键列,就像我们所知的聚簇索引。 请告诉我,如果我在该列(主键列)上创建非聚集索引,我会获得任何好处吗?

编辑:我的表目前有大约60000条记录,最好将非聚集索引放在其上,或者创建一个相同的新表并创建索引,然后将记录从旧表复制到新表。

由于

4 个答案:

答案 0 :(得分:6)

  • 每个表都应该有一个聚集索引
  • 非聚集索引允许包含非常有用的INCLUDE
  • 非聚集索引允许在SQL Server 2008 +中进行过滤

注意:

  • 主键是一个默认情况下恰好是聚簇索引的约束
  • 仅限一个聚簇索引,许多非聚集索引

答案 1 :(得分:4)

一个优点:您可以INCLUDE索引中的其他列。

答案 2 :(得分:3)

聚簇索引指定表数据的物理存储顺序(这就是为什么每个表只能有一个聚簇索引)。

如果没有聚簇索引,插入通常会更快,因为数据不必按特定顺序存储,而只能附加在表的末尾。

另一方面,对键列的索引搜索通常会较慢,因为搜索不能使用聚簇索引的优点。

答案 3 :(得分:0)

我能看到的唯一可能的优势可能是非聚集索引的叶子页面上的条目不够宽。它们只包含索引列,而聚簇索引'叶页是实际的数据行。因此,如果您需要来自your_table的select count(your_column_name)之类的内容,那么扫描非聚集索引将涉及相当少数量的数据页。或者,如果索引列的数量大于1,并且您再次运行任何不需要非索引列数据的查询,则非聚集索引扫描将更快。