欢迎来到天天文库
浏览记录
ID:15340878
大小:240.00 KB
页数:9页
时间:2018-08-02
《sql server 索引基础知识----聚集索引,非聚集索引》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、不论是聚集索引,还是非聚集索引,都是用B+树来实现的。我们在了解这两种索引之前,需要先了解B+树。如果你对B树不了解的话,建议参看以下几篇文章:BTree,B-Tree,B+Tree,BTree都是什么http://blog.csdn.net/manesking/archive/2007/02/09/1505979.aspxB+树的结构图:B+树的特点:·所有关键字都出现在叶子结点的链表中(稠密索引),且链表中的关键字恰好是有序的;·不可能在非叶子结点命中;·非叶子结点相当于是叶子结点的索引(稀
2、疏索引),叶子结点相当于是存储(关键字)数据的数据层;B+树中增加一个数据,或者删除一个数据,需要分多种情况处理,比较复杂,这里就不详述这个内容了。 聚集索引(ClusteredIndex)·聚集索引的叶节点就是实际的数据页·在数据页中数据按照索引顺序存储·行的物理位置和行在索引中的位置是相同的·每个表只能有一个聚集索引·聚集索引的平均大小大约为表大小的5%左右下面是两副简单描述聚集索引的示意图: 在聚集索引中执行下面语句的的过程:selectfromtablewherefirstName='O
3、ta' 一个比较抽象点的聚集索引图示: 非聚集索引(UnclusteredIndex) ·非聚集索引的页,不是数据,而是指向数据页的页。·若未指定索引类型,则默认为非聚集索引·叶节点页的次序和表的物理存储次序不同·每个表最多可以有249个非聚集索引·在非聚集索引创建之前创建聚集索引(否则会引发索引重建)在非聚集索引中执行下面语句的的过程:selectfromemployeewherelname='Green'一个比较抽象点的非聚集索引图示: 什么是BookmarkLookup虽然SQL2005
4、中已经不在提 BookmarkLookup了(换汤不换药),但是我们的很多搜索都是用的这样的搜索过程,如下:先在非聚集中找,然后再在聚集索引中找。 在http://www.sqlskills.com/提供的一个例子中,就给我们演示了BookmarkLookup 比TableScan慢的情况,例子的脚本如下:USECREDITgo--ThesesamplesusetheCreditdatabase.Youcandownloadandrestorethe--creditdatabasefromher
5、e:--http://www.sqlskills.com/resources/conferences/CreditBackup80.zip--NOTE:ThisisaSQLServer2000backupandMANYexampleswillworkon--SQLServer2000inadditiontoSQLServer2005.---------------------------------------------------------------------------------(
6、1)Createtwotableswhicharecopiesofcharge:---------------------------------------------------------------------------------CreatetheHEAPSELECTINTOChargeHeapFROMChargego--CreatetheCLTableSELECTINTOChargeCLFROMChargegoCREATECLUSTEREDINDEXChargeCL_CLIndON
7、ChargeCL(member_no,charge_no)go---------------------------------------------------------------------------------(2)Addthesamenon-clusteredindexestoBOTHofthesetables:---------------------------------------------------------------------------------Crea
8、tetheNCindexontheHEAPCREATEINDEXChargeHeap_NCIndONChargeHeap(Charge_no)go--CreatetheNCindexontheCLTableCREATEINDEXChargeCL_NCIndONChargeCL(Charge_no)go---------------------------------------------------------------------------------(3)Begintoquerythe
此文档下载收益归作者所有