当前位置:七道奇文章资讯数据防范MSSQL防范
日期:2011-01-25 23:11:00  来源:本站整理

SQL聚簇索引与非聚簇索引的本质辨别[MSSQL防范]

赞助商链接



  本文“SQL聚簇索引与非聚簇索引的本质辨别[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

SQL聚簇索引的次序就是数据的物理存储次序,那么,SQL聚簇索引与非聚簇索引的本质辨别,毕竟在那边呢?

目前谈论SQL聚簇索引与非聚簇索引的本质辨别.正如本文最前面的两个图所示,聚簇索引的叶节点就是数据节点,而非聚簇索引的页节点仍旧是索引检核,并保存一个链接指向对应数据块.

还是通过一道数学题来看看它们的辨别吧:假定有一8000条记录的表,表中每条记录在磁盘上占用1000字节,假如在一个10字节长的字段上成立非聚簇索引主键,需求二叉树节点16000个(这16000个节点中有8000个叶节点,每个页节点都指向一个数据记录),这样数据将占用8000条×1000字节/8K字节=1000个页面;索引将占用16000个节点×10字节/8K字节=20个页面,总计1020个页面.

一样一张表,假如我们在对应字段上成立SQL聚簇索引主键,由于SQL聚簇索引的页节点就是数据节点,所以索引节点唯一8000个,占用10个页面,数据仍旧占据1000个页面.

下面我们看看在履行插入操作时,非聚簇索引的主键为什么比聚簇索引主键要快.主键约束要求主键不能呈现反复,那么SQL Server是怎么知道不呈现反复的呢?唯一的办法就是检索.关于非聚簇索引,只需求检索20个页面中的16000个节点就知道能否有反复,因为全部主键键值在这16000个索引节点中都包含了.但关于聚簇索引,索引节点仅仅包含了8000此中间节点,至于会不会呈现反复必须检索别的1000个页数据节点才知道,那么相当于检索10+1000=1010个页面才知道能否有反复.所以聚簇索引主键的插入速度要比非聚簇索引主键的插入速度慢很多.

让我们再来看看数据检索的效率,假如对上述两表举行检索,在利用索引的情形下(有些时刻SQL Server履行筹划会挑选不利用索引,不过我们这里姑且假定一定利用索引),关于SQL聚簇索引检索,我们大概会拜候10个索引页面外加1000个数据页面得到后果(实际情形要比这个好),而关于非聚簇索引,系统会从20个页面中找到符合条件的节点,再映射到1000个数据页面上(这也是最糟糕的情形),对比一下,一个拜候了1010个页面而另一个拜候了1020个页面,可见检索效率差别并非很大.所以不管非聚簇索引也好还是聚簇索引也好,都合适排序,聚簇索引仅仅比非聚簇索引快一点.

<
  以上是“SQL聚簇索引与非聚簇索引的本质辨别[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • SQL聚簇索引与非聚簇索引的本质辨别
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .