1
76
在没有聚集索引(堆表)的表中,数据页不链接在一起,因此遍历页需要 lookup into the Index Allocation Map .
但是,一个集群表有
data pages linked in a doubly linked list
-使顺序扫描更快一点。当然,作为交换,您有处理使数据页保持有序的开销
如果您的查询有
当然,聚集索引允许您执行聚集索引查找,这对于性能来说是非常理想的…没有索引的堆总是会导致表扫描。 所以:
微软有 whitepaper 它将聚集索引与堆上的等效非聚集索引进行比较(与我上面讨论的不完全相同,但已关闭)。他们的结论基本上是在所有表上放置一个聚集索引。我将尽最大努力总结它们的结果(再次注意,这里他们确实在比较非聚集索引和聚集索引——但我认为这是相对可比的):
|
2
4
http://msdn.microsoft.com/en-us/library/aa216840(SQL.80).aspx 聚集索引扫描逻辑和物理运算符扫描参数列中指定的聚集索引。当存在可选的where:()谓词时,只返回满足该谓词的行。如果参数列包含ORDERED子句,则查询处理器请求按聚集索引对其排序的顺序返回行的输出。如果没有ordered子句,存储引擎将以最佳方式扫描索引(不保证输出被排序)。 http://msdn.microsoft.com/en-us/library/aa178416(SQL.80).aspx 表扫描逻辑和物理运算符从参数列中指定的表中检索所有行。如果在参数列中出现where:()谓词,则只返回满足该谓词的行。 |
3
-2
表扫描必须检查表的每一行。聚集索引扫描只需要扫描索引。它不会扫描表中的所有记录。这就是指数的意义所在。 |
Duvan · 将逗号(,)替换为点(.)[副本] 2 年前 |
Mateen Bagheri · 选择表的计数并选择其自身 2 年前 |
SoT · SQL Server中求和函数的工作方式 2 年前 |
NKAT · 将列值聚合到列表中会产生错误 2 年前 |
deanpillow · 返回两列中有一个匹配值的记录 2 年前 |
snowflakes74 · 在Dapper中异步查询多个结果 2 年前 |