|
|
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:()谓词时,只返回满足谓词的行。如果Argument列包含ORDERD子句,则查询处理器已请求按照聚集索引对行进行排序的顺序返回行的输出。如果ORDERD子句不存在,存储引擎将以最佳方式扫描索引(不保证对输出进行排序)。 http://msdn.microsoft.com/en-us/library/aa178416(SQL.80).aspx 表扫描逻辑和物理运算符从参数列中指定的表中检索所有行。如果Argument列中出现WHERE:()谓词,则只返回满足该谓词的行。 |
|
|
3
-2
表扫描必须检查表的每一行。聚集索引扫描只需要扫描索引。它不会扫描表中的所有记录。这才是指数的真正意义所在。 |
|
John D · 需要为NULL或NOT NULL的WHERE子句 1 年前 |
|
Marc Guillot · 记录值时忽略冲突 1 年前 |
|
|
Fachry Dzaky · 正确使用ROW_NUMBER 1 年前 |
|
|
TriumphTruth · 从满足特定条件的数据集中选择1行 1 年前 |