日期:2014-05-17  浏览次数:20563 次

(----------标题短了怕被无视了,要长一点----------)非聚集索引的B树结构中,数据时如何存储的?


按照这种结构,跟节点标识表信息,叶节点存储RID或者指向聚集索引的键

那么说白了,在执行计划中,
非聚集索引的查找(这里考虑的是非唯一的非聚集索引),
其实也就是扫描一遍这里的叶节点信息,去查找对应的数据

这里我不是故意要把扫描和查找混为一潭,


图片中index_id列为2,非聚集索引,截图截少了一点



但是数据量比较大时,非聚集索引的结构变大了
那么从下面这个DMV中反应出来的结果来看,B树有三层,
在进行非聚集索引查找的时候,
终究是要利用索引本身去查找信息,所有的索引页都要扫描过一遍
那么中间层存储的是啥信息,为啥要的中间的这一层?

非聚集索引的B树又不像聚集索引的B树,按顺序存储,
中间层节点可以对查询分流(指向不同的下一层节点,直到找到存储数据的叶子节点)

非聚集索引存储的索引键没有顺序吧?



另外,索引行中的索引存储的没有顺序吧?我感觉在某个列上建立了非聚集索引,按存储时间的推移,数据在插入表的时候,这个列依次存放进非聚集索引结构的索引行里面

是不是?







---------------------------------广告走远-------------------------------