微软BI开拓者数据库专区SQL Server开发 请问在建立了聚集索引的表内,数据页中的数据行是如何存储的

1  /  1  页   1 跳转 查看:4741

请问在建立了聚集索引的表内,数据页中的数据行是如何存储的

请问在建立了聚集索引的表内,数据页中的数据行是如何存储的

请问在建立了聚集索引的表内,数据页中的数据行是如何存储的?

行和行之间是按照其聚集索引的之间的顺序存储的吗?

如果是的话?为什么使用dbcc page命令查看的offset table信息
中没行之间的偏移量不是顺序增长呢?

例如:
create table table5
(
    col1 varchar(5)  primary key
)

insert into table5 values('b')
insert into table5 values('f')
insert into table5 values('c')
insert into table5 values('a')


得到的OFFSET TABLE信息为:
OFFSET TABLE:
-------------
Row - Offset             
3 (0x3) - 108 (0x6c)     
2 (0x2) - 120 (0x78)     
1 (0x1) - 96 (0x60)     
0 (0x0) - 132 (0x84) 

虽然将offset table内的信息对应到Data中可以看到数据的确是按照字母顺序进行的排序,但是为什么偏移量却没有进行排序呢?而是保持了数据插入时的顺序,这是为什么?

谢谢
 

回复: 请问在建立了聚集索引的表内,数据页中的数据行是如何存储的

聚集索引在叶子端通过链表将数据连接起来的
 

回复:请问在建立了聚集索引的表内,数据页中的数据行是如何存储的

答复楼主的:
聚集索引在数据页中不是按照物理的顺序来排列的
而是通过偏移量来维持,在一个聚集索引中,还需要7个其他的字节来保存一些属性,非聚集是10个字节,索引你看到的a是96,b是108c是120d是132
 

回复:请问在建立了聚集索引的表内,数据页中的数据行是如何存储的

但是页与页间是有顺序滴
 

回复:请问在建立了聚集索引的表内,数据页中的数据行是如何存储的

slotid表明的是行的逻辑顺序,而偏移量却是磁盘上真正的行顺序
 
1  /  1  页   1 跳转

版权所有 微软BI开拓者 

Powered by Discuz!NT 2.1.202    Copyright © 2001-2012 Comsenz Inc.
Processed in 0.0468768 second(s) , 3 queries.
返顶部