加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

Sql Server之旅——第八站 复合索引和include索引到底有多大区别

发布时间:2020-12-12 09:01:05 所属栏目:MsSql教程 来源:网络整理
导读:test1(ID ,Name ( ),Email ( test1 ( , , test1 ( , , idx_test1 test2(ID ,Email ( test2 ( , test2 ( , idx_test2 dbo.test2(Name) INCLUDE(Email) 2. 然后通过DBCC 命令查看数据页记录 先来看看test1表中各个槽位的信息 TRACEON( , IND(Ctrip,test1, PAGE

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条记录。

这几天上海特别冷,打字都打着手哆嗦。。。不准备继续说了。。。下一篇继续扯下复合索引到底都能带来哪些好处。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读