<b>SQL Server数据库技术(46)</b>[MSSQL防范]
本文“<b>SQL Server数据库技术(46)</b>[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
用户对数据库最频繁的操作是举行数据查询.普通情形下,数据库在举行查询操作时需求对整个表举行数据搜索.当表中的数据很多时,搜索数据就需求很长的时间,这就造成了服务器的资源浪费.为了提高检索数据的本领,数据库引入了索引机制.本章将介绍索引的概念及其成立与管理.
8.1.1 索引的概念
索引是一个单独的、物理的数据库构造,它是某个表中一列或若干列值的调集和呼应的指向表中物理标识这些值的数据页的逻辑指针清单.索引是依靠于表成立的,它供应了数据库中编排表中数据的内部办法.一个表的存储是由两部份构成的,一部份用来存放表的数据页面,另一部份存放索引页面.索引就存放在索引页面上,普通,索引页面相关于数据页面来说小得多.当举行数据检索时,系统先搜索索引页面,从中找到所需数据的指针,再直接通过指针从数据页面中读取数据.从某种程度上,可以把数据库看做一本书,把索引看做书的目录,通过目录查找书中的信息,明显较没有目录的书便利、快速.
索引和关键字及约束有较大的接洽.关键字可以分为两类:一种是逻辑关键字,即在 "数据库底子章"节中介绍的;另一种是物理关键字,它用来定义索引的列,也即索引.
8.1.2 索引的构造
(1) 索引的B-树构造
sql server 中的索引是以B-树构造来保护的,如图8-1 所示.B-树是一个多层次、自保护的构造.一个B-树包含一个顶层,称为根节点(Root Node);0 到多此中间层(Intermediate);一个底层(Level 0),底层中包含若干叶子节点(Leaf Node).在图 8-1 中,每个方框代表一个索引页,索引列的宽度越大,B-树的深度越深,即层次越多,
读取记录所要拜候的索引页就越多.也就是说,数据查询的性能将随索引列层次数目的增添而降低. 图8-1 索引的B-树构造
在SQL Server 的数据库中按存储构造的差别将索引分为两类:簇索引(Clustered Index)和非簇索引(Nonclustered Index).
(2) 簇索引簇索引对表的物理数据页中的数据按摆列行排序,然后再重新存储到磁盘上,即簇索引与数据是混为一体,的它的叶节点中存储的是实际的数据.由于簇索引对表中的数据一一举行了排序,因此用簇索引查找数据很快.但由于簇索引将表的全部数据完好重新布列了,它所需求的空间也就分外大,大约相当于表中数据所占空间的120% .表的数据行只能以一种排序方法存储在磁盘上,所以一个表只能有一个簇索引.
(3) 非簇索引非簇索引具有与表的数据完好别离的构造,利用非簇索引不用将物理数据页中的数据按列排序.非簇索引的叶节点中存储了构成非簇索引的关键字的值和行定位器.行定位器的构造和存储内容取决于数据的存储方法.假如数据是以簇索引方法存储的,则行定位器中存储的是簇索引的索引键;假如数据不是以簇索引方法存储的,这种方法又称为堆存储方法(Heap Structure),则行定位器存储的是指向数据行的指针.非簇索引将行定位器按关键字的值用一定的方法排序,这个次序与表的行在数据页中的排序是不匹配的.由于非簇索引利用索引页存储因此它比簇索引需求更多的存储空间且检索效率较低但一个表只能建一个簇索引,当用户需求成立多个索引时就需求利用非簇索引了.从理论上讲,一个表最多可以建249 个非簇索引.
本文地址: | 与您的QQ/BBS好友分享! |