数据库索引及解析.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据库索引及解析   [摘要]数据库是大量数据的集合,要从这大量数据中获得符合我们自身需要的数据就需要查找,因为数据有很多,就需要按照一定的数据顺序来查找,这个查找顺序就是索引。具体地说,索引是对数据库表中一列或多列的值进行排序的一种数据结构,使用索引可跳过全表扫描而达到快速访问数据库表中的特定信息的效果,这也是建立与使用索引的最初目的。但是索引运用得不当的话却会适得其反,会降低系统性能。      [关键词]数据库 SQL2008 索引 创建 碎片 重建   中图分类号:P628+.4文献标识码:A      绪    随着现代信息技术的发展,数据处理技术得到大力发展,而数据管理不只是存储数据和管理数据,还包括用户所需要的不同的数据管理的方式。数据库技术从存储有各种数据的原始表格到能够进行大量数据存储的大型数据库系统都在各个方面得到了广泛的应用,形成了多种类型的数据库处理技术。其中,关系数据库是一种典型的数据管理方式,而且相对比较稳定。但关系数据库也存在一些不足:存取路径对用户透明导致查询效率往往不如非关系数据模型。为提高性能,必须对用户的查询请求进行优化,增加了开发数据库管理系统的难度。而索引是进行大量数据的查询必要简化手段,也是实现查询请求优化的重要方法,本文就对关系数据库(以SQL server2008为例)的索引进行详细的探究。      一、数据库文件底层物理结构   数据库系统是一个搭在操作系统平台上的数据管理软件,所管理的数据最终是以文件形式存在。数据库中的每个文件都有一个唯一的文件 ID 号。数据存储是以页为基本单位,若要唯一标识数据库中的页,需要同时使用文件 ID 和页码。   SQL Server 中数据存储的基本单位是页,每页大小为8K,当系统为数据库文件.mdf 或 .ndf分配磁盘空间时,从逻辑上划分成从0到n连续编号的页,数据都存储页上操作。在数据页上,每页的开头是 96 字节的标头,用于存储有关页的系统信息。此信息包括页码、页类型、页的可用空间以及拥有该页的对象的分配单元 ID。数据行是真正存储数据的,它紧接着标头按顺序放置,页的末尾是行偏移表,对于页中的每一行,每个行偏移表都包含一个条目。每个条目记录对应行的第一个字节与页首的距离。行偏移表中条目的顺序与页中数据行的顺序相反。   SQL Server中管理数据存储空间的基本单位是区。一个区通常是八个物理上连续的页。为了更有效地利用分配的磁盘空间,根据区内含有对象个数分为统一区和混合区。统一区由单个对象所有,区中8页只能由所属对象使用。混合区最多可由八个对象共享,区中八页的每页可由不同的对象所有。通常从混合区向新表或索引分配页,当表或索引增长到 8 页时,将变成使用统一区进行后续分配。如果对现有表创建索引,并且该表包含的行足以在索引中生成 8 页,则对该索引的所有分配都使用统一区进行。   从上面知识,我们可以知道表组织关系为:表分布在一个或多个分区中,每个分区在一个堆或一个聚簇索引结构包含数据行。堆页或聚簇索引页在一个或多个分配单元中进行管理,具体的分配单元数取决于数据行中的列类型。   二、数据库中的索引   索引是一种在表上建立的用来提高数据查询速度的B-tree类型的数据结构。当我们在某列上建立索引后,数据库会在表中建立索引数据,这些数据以页级为基本单位进行存储,每一个页中都包含指向数据的指针,使用查询时就会根据这些索引信息进行查询,以提高查询速度。但索引是一种独立于数据库表的数据结构,存储它需要额外的空间,而且在后面对数据库表进行的插入、删除等操作都要对索引进行操作,都会影响数据库系统的性能。   数据库系统支持的索引类型按存储结构可以分为聚簇索引和非聚簇索引。   1、聚簇索引(也称聚类索引、聚集索引)   索引是按B-tree结构进行组织的。索引B-tree中的每一页称为一个索引节点。B-tree的顶端节点称为根节点。索引中的底层节点称为叶节点。根节点与叶节点之间的任何索引级别统称为中间级。聚簇索引的数据页是按照表中数据的物理存储顺序来有序存储。聚簇索引叶节点包含基础表的数据页。根节点和中间级节点包含存有索引行的索引页。每个索引行包含一个键值和一个指针,该指针指向B-tree上的某一中间级页或叶级索引中的某个数据行。每级索引中的页通过双向链接的形式连接起来。当使用查询时,可以通过对B-tree的查找到对应的索引值,再去查找该索引对应的具体数据页所在的叶子节点获取数据。使用索引查询可以避免全表扫描,而且在查询B-tree的过程中,可以使用二分查找法、折半查找法等查找方式对索引的查询进行优化,这样就更加提高了查询的速度。由于聚簇索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚簇索引。  

文档评论(0)

guan_son + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档