表扫描与聚簇索引扫描

时间:2014-03-20 04:32:57

标签: sql-server database-administration sql-execution-plan

我有一个表,在大多数情况下,我需要获取所有行。它现在有10334条记录,预计不会超过15K。该表经常更新。

如果需要,我可以创建一个Clustered索引。

但这会是一个好主意,把桌子当作堆吗?由于所有记录都需要每次都获取,表扫描和聚集索引扫描会提供相同的性能吗?

1 个答案:

答案 0 :(得分:1)

建议在以下环境中使用全表扫描而不是使用任何类型的索引(群集/非群集索引)搜索/扫描:

  1. 访问表格的所有记录时。根据您的评论 - "所有记录都需要每次都被提取,因此通过任何类型的索引访问数据都无效。
  2. 表行包含10-20K行并经常更新。根据你的评论 - " ...现在有10334条记录,预计不会超过15K。该表经常更新。"
  3. 此外,集群索引不会单独维护数据结构(表),而是将数据行排序并存储在表本身中。

    回答你的问题:

    Q#但这会是一个好主意,将表保持为堆?

    回答#如果将表保存为堆(没有集群索引)并且始终访问所有行而没有按特定的Coloumn为结果集排序,则没有任何害处。

    Q#由于所有记录都需要每次都被提取,表扫描和聚簇索引扫描会提供相同的性能吗?

    如果您在任何时间点按排序顺序获取记录,请回答#获取Clustered-index。