第7章 索引和其应用.ppt

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * 第七章 --数据的索引及其应用 7.1 索引的基础知识 7.2 索引的分类 7.3 索引的操作 7.6 案例中的索引 7.4 设置索引的选项 7.5 索引的分析与维护 目录 索引是一种特殊类型的数据库对象,它保存着数据表中一列或几列组合的排序结构。为数据表增加索引,可以大大提高数据的检索效率。索引是数据库中一个重要的对象,本章将详细介绍索引的基本概念、使用索引的意义、创建索引的方法以及对索引的操作。 7.1 索引的基础知识 7.1.1 数据存储 在SQL Server 2000中,数据存储的基本单位是页,其大小是8KB。每页的开始部分是96 B的页首,用于存储系统信息,如页的类型、页的可用空间量、拥有页的对象ID等。 7.1.2索引 1.索引的概念 索引是以表列为基础建立的数据库对象,它保存着表中排序的索引列,并且记录了索引列在数据表中的物理存储位置,实现了表中数据的逻辑排序。SQL Server 2000将索引组织为 B树,索引内的每一页包含一个页首,页首后面跟着索引行。每个索引行都包含一个键值以及一个指向较低级页或数据行的指针。索引的每个页称为索引节点。B树的顶端节点称为根节点,索引的底层节点称为叶节点,根和叶之间的任何索引级统称为中间级。 2.使用索引的意义 索引在数据库中的作用与目录在书籍中的作用类似,都用来提高查找信息的速度.查找内容时,先在目录中找到相关的页码,然后按照页码找到内容。两者相比,利用目录查找内容要比一页一页地查找速度快很多。在数据库中查找数据,也存在两种方法:一种是全表扫描,与一页一页地翻书查找信息类似,用这种方法查找数据要从表的第一行开始逐行扫描查找,直到找到所需信息;另一种是使用索引,索引是一个表中所包含值的列表,其中注明了表中包含各个值的行所在的存储位置,使用索引查找数据时,先从索引对象中获得 3.使用索引的代价 为每一列都建立索引是不明智的,因为使用索引要付出一定的代价: ●索引需要占用数据表以外的物理存储空间。例如,要建立一个聚集索引,需要大约1.2倍于数据大小的空间。 ●创建索引和维护索引要花费一定的时间。 ●当对表进行更新操作时,索引需要被重建,这样降低了数据的维护速度。 4.建立索引的原则 一般原则是: ●主键列上一定要建立索引。 ●外键列可以建索引。 ●在经常查询的字段上最好建立索引。 ●对于那些查询中很少涉及的列、重复值比较多的列不要建索引。 ? 对于定义为text,Image和Bit数据类型的列上不要建立索引。 7.2 索引的分类 在SQL Server数据库中,根据索引的存储结构不同将其分为两类:聚集索引和非聚集索引。 7.2.1 聚集索引 聚集索引是指表中数据行的物理存储顺序与索引顺序完全相同。每个表只能创建一个聚集索引。 图7.1 聚集索引的结构示意图 7.2.2 非聚集索引 非聚集索引与聚集索引一样有 B 树结构,但是有两个重大差别: ●数据行不按非聚集索引键的顺序排序和存储。 ●非聚集索引的叶层不包含数据页。 非聚集索引可以在有聚集索引的表、堆集或索引视图上定义。非聚集索引中的行定位器有两种形式: ●如果表是堆集(没有聚集索引),行定位器就是指向行的指针。该指针用文件标识符 (ID)、页码和页上的行数生成。整个指针称为行 ID。 ●如果表没有聚集索引,或者索引在索引视图上,则行定位器就是行的聚集索引键。如果聚集索引不是唯一的索引,SQL Server将添加在内部生成的值以使重复的键唯一。用户看不到这个值,它用于使非聚集索引内的键唯一. 图7.2 非聚集索引的结构示意图 7.2.3 聚集和非聚集索引的性能比较 当进行单行查找时,聚集索引的输入输出速度比非聚集索引快,因为聚集索引的索引级别较小。聚集索引非常适合于范围查询,因为服务器可以缩小数据范围,先得到第一行,再进行扫描,无需再次使用索引;非聚集索引速度稍慢,占用空间特别大,但也是一种较好的表扫描方法。非聚集索引可能覆盖了查询的全部过程。也就是说,假如所需数据在索引中,服务器就不必再返回到数据行中。 7.3 索引的操作 7.3.1 创建索引 SQL Server 2000可以自动创建唯一索引,以强制实施PRIMARY KEY和UNIQUE约束的唯一性要求。如果需要创建不依赖于约束的索引,可以使用企业管理器创建索引,也可 以使用创建索引向导创建索引,还可以在查询分析器中用SQL语句创建索引。 创建索引时要注意: ●只有表或视图的所有者才能创建索引,并且可以随时创建。 ●对表中已依次排列的列集合只能定义一个索引。 ●在创建聚集索引时,将会对表进行复制,对表中的数据进行排序,然后删除原始

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档