SQL Server索引

时间:2009-04-17 06:00:17

标签: sql sql-server

聚簇索引扫描和聚簇索引查找有什么区别?

4 个答案:

答案 0 :(得分:4)

聚簇索引扫描是具有聚簇索引的表上的表扫描。默认情况下,主键是聚簇索引,因此基本上是具有主键的表。

当谓词包含除主键之外的列(并且没有其他索引可用于满足谓词)时,会发生聚簇索引扫描。

当谓词包含索引中的一个或多个列时,会发生聚簇索引搜索(和非聚簇索引搜索)。这允许查询处理器根据索引查找行范围,而无需扫描。

答案 1 :(得分:2)

聚簇索引SCAN从头到尾扫描整个聚簇索引(=数据表)。

聚集索引SEEK仅扫描该索引的一个(希望很小)部分/部分 - >更快!

马克

答案 2 :(得分:2)

扫描会触及索引中的每个条目,而搜索只会遍历到要查询的项目,从而使搜索速度更快。通常,除非必要,否则应避免扫描。

答案 3 :(得分:1)

当条件适合索引数据时使用搜索,以便它可以有效地使用索引,例如在以下查询中:

select Name from Table where Group = 42

由于比较是一个直接值,它可以很容易地用于定位项目所在的索引部分。

当条件更复杂时使用扫描,以便必须评估索引中的每个值,例如在以下查询中:

select Name from Table where right(cast(group as varchar), 2) = '00'

由于条件使用索引中的计算值,该值不能轻易用于隔离索引的一部分,因此必须对所有项目进行评估。