<b>三种SQL索引</b>[MSSQL防范]
本文“<b>三种SQL索引</b>[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
SQL索引是SQL中非常重要的构成部份,下面就将为您介绍三种最常见的SQL索引,但愿对您熟习SQL索引有所帮忙.
一 .堆积索引
堆积索引的页级别包含了索引键,还包含数据页,因此,关于 除了键值以外堆积索引的叶级别还存放了什么的答案就是一切,也就是说,每行的全部字段都在叶级别种.
另一种说话是:数据本身也是堆积索引的一部份,堆积索引基于键值保持表中的数占据序.
SQL SERVER 中,全部的堆积索引都是唯一的,假如在成立堆积索引时没有指定UNIQUE 关键字,SQL SERVER 会在需求时通过往记录中增添一个唯一标识符(Uniqueifier)在内部保证索引的唯一性,该唯一标识符是一个4字节的值,作为附加在堆积索引键的字段增添到数据中,只有那些声明为索引键字段并拥有反复值的行才会被增添.
二 .非堆积索引
关于非堆积索引,叶级别不包含全部的数据.除了键值以外,每个叶级别(树的最低层)中的索引行包含了一个书签(bookmark),奉告SQL Server 可以在那边找到与索引键呼应的数据行.一个书签课能有两种格局.假如表上存在堆积索引,书签就是呼应的数据行的堆积索引键.假如表是堆(heap)构造 ,就是没有堆积索引的情形下 ,书签就是一个行标识符 row identifier,rid ,以 文件号 页号 槽号 的格局来定位实际的行.
非堆积索引的存在与否并不影响数据分页的组织,因此每张表上并不像堆积索引那样只范围于拥有一个非堆积索引,SQL Server 2005 每张表可以包含249 个非堆积索引 SQL Server 2008 每张表可以包含999 个非堆积索引 ,但是实际上所用到的比这个数要少的多.
三 .包含索引
索引键字段数目限制是16个,总共900个字节大小 ,包含性列只在叶级别中呈现并且不以任何方法掌握索引行的排序.它们的目的是使叶级别可以包含更多的信息从而更大地施展覆盖索引(Covering index)的索引调优本领.覆盖索引是一种非堆积索引,在其叶级别便可以找到满意查询的全部信息,这样sql server就根本没有必要拜候数据分页了,在一些情形下 sql serer 会暗暗的为索引增添一个包含性列.这大概发生在索引成立于分区表 也就是我本日是发的博客 O(∩_∩)O (partitioned table )上没有指定 on filegroup 大概 no partition_scheme 的情形下.
<以上是“<b>三种SQL索引</b>[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |