test1(ID ,Name (),Email ( test1 (,, test1 (,, idx_test1
test2(ID ,Email ( test2 (, test2 (, idx_test2 dbo.test2(Name) INCLUDE(Email)
2. 然后通过DBCC 命令查看数据页记录
<1> 先来看看test1表中各个槽位的信息
TRACEON(, IND(Ctrip,test1, PAGE(Ctrip,,,)
Slot ,Offset ,Length
Record Type INDEX_RECORD Record Attributes NULL_BITMAP Record Size
Memory
: 2e636f6d †.aaaaa111 : c0000000
Slot ,Offset ,DumpStyle BYTE
Record Type INDEX_RECORD Record Attributes NULL_BITMAP Record Size
Memory
: 2e636f6d †.bbbbb222 : c0000000
OFFSET
Row () ( () ()
<2> 再来看看test2表中各个槽位信息
TRACEON(,test2,,)
Slot ,DumpStyle BYTE
Record Type INDEX_RECORD Record Attributes NULL_BITMAP Record Size
Memory
: 6161c400 †.aaaaa........
: 2e636f6d †††††††††††††
Slot ,DumpStyle BYTE
Record Type INDEX_RECORD Record Attributes NULL_BITMAP Record Size
Memory
: 6262c400 †.bbbbb........
: 2e636f6d †††††††††††††
OFFSET
Row () ( () ()
<3> 从test1和test2的数据页来看,都是有两个slot槽位,然后我们把test1和test2的slot0槽位拿出来对比下,是不是就知道两者大概有什么区别了。
test1のslot0
: 2e636f6d †.aaaaa111 : c0000000 †††††††††††††...........
test2のslot0
: 6161c400 †.aaaaa........
: 2e636f6d †††††††††††††.com...
下面我仔细解剖下两表中的slot内容:
16 6161616161 3131314071712e636f6d c0000000 0100 0000 0300 00
16: 这个是索引记录的系统头数据。
6161616161: 转换成十进制就是9797979797,也就是字符的aaaaa。
3131314071712e636f6d: 这个我想你也懂,也就是111@qq.com。
c000000010000000: 因为我们是堆表,所以这个就是表的RowID,转化为十进制就是: 192:1:0。
0300: 这个表示表中的记录数,也就是3条记录。
这几天上海特别冷,打字都打着手哆嗦。。。不准备继续说了。。。下一篇继续扯下复合索引到底都能带来哪些好处。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。