聚簇索引排序顺序是否会影响性能

时间:2014-10-10 18:01:47

标签: sql sql-server sorting rdbms

如果表的PK是标准的自动增量int(Id),并且检索和更新的记录几乎总是接近最大Id,那么它是否会在性能方面与PK聚簇索引是否排序有任何区别如上升还是下降?

当创建这样的PK时,SSMS默认将索引的排序顺序设置为升序,并且因为访问最多的行总是接近当前最大Id的行,我想知道将排序更改为降序会加快速度检索起来,因为记录将自上而下排序而不是自下而上,并且最常访问靠近顶部的记录。

2 个答案:

答案 0 :(得分:2)

索引使用B树结构,所以不是。但是如果你有一个基于多列的索引,你需要外层的最不同的列,而内层的最不同的列。例如,如果你有2列(性别和年龄),你会想要外部的年龄和内部的性别,因为只有2种可能的性别,而有更多的年龄。这将影响绩效。

答案 1 :(得分:2)

我认为不会有任何性能影响。因为,它将对索引键执行二进制搜索,然后使用该键访问特定数据块。无论哪种方式,二进制搜索都会达到O(log N)复杂度。所以总共O(log N) + 1,因为它是聚集索引,它实际上应该是O(log N)时间复杂度;因为表记录是物理排序的,而不是单独的索引页/块。