sql_server_2005之9索引和查询优化课件.ppt

  1. 1、本文档共45页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
sql_server_2005之9索引和查询优化课件

第9章 索引和查询优化 学习目标 数据库管理系统通常使用索引技术加快对表中数据的检索。索引类似于图书的目录。目录允许用户不必翻阅整本图书就能根据页数迅速找到所需内容。在数据库中,索引也允许数据库应用程序迅速找到表中特定的数据,而不必扫描整个数据库。 在图书中,目录是内容和相应页码的列表清单。在数据库中,索引是表中数据和相应存储位置的列表。 本章将详细研究有关索引和查询优化的内容。 本章重点 索引的特点 索引的类型 创建索引 索引信息 优化索引 优化查询 本章内容 9.1 概述 9.2 索引的类型和特点 9.3 创建索引 9.4 索引维护 9.5 查询优化 9.6 上机练习 9.7 习题 9.1 概述 在Microsoft SQL Server系统中,可管理的最小空间是页。一个页是8KB字节的物理空间。插入数据的时候,数据就按照插入的时间顺序被放置在数据页上。一般地,放置数据的顺序与数据本身的逻辑关系之间是没有任何联系的。 因此,从数据之间的逻辑关系方面来讲,数据是乱七八糟堆放在一起的。数据的这种堆放方式称为堆。 当一个数据页上的数据堆放满之后,数据就得堆放在另外一个数据页上,这时就称为页分解。 为什么要创建索引呢? 索引是一种与表或视图关联的物理结构,可以用来加快从表或视图中检索数据行的速度。 为什么要创建索引呢?这是因为创建索引可以大大提高系统的性能。第一,通过创建唯一性索引,可以保证每一行数据的唯一性。第二,可以大大加快数据的检索速度,这也是索引的最主要的原因。第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。第四,在使用ORDER BY和GROUP BY子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。第五,通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能。 正是因为上述这些原因,所以应该对表增加索引。 为什么不对表中的每一个列创建一个索引呢? 也许会有人要问增加索引有如此多的优点,为什么不对表中的每一个列创建一个索引呢? 虽然索引有许多优点,但是为表中的每一个列都增加索引是非常不明智的做法。这是因为增加索引也有其不利的一面。 第一,创建索引和维护索引要耗费时间。 第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间。如果要建立聚集索引,那么需要的空间就会更大。 第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。 索引是建立在列的上面 在经常需要搜索的列上创建索引; 在主键上创建索引; 在经常用于连接的列上创建索引,也就是在外键上创建索引; 在经常需要根据范围进行搜索的列上创建索引(因为索引已经排序,其指定的范围是连续的); 在经常需要排序的列上创建索引(因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间); 在经常用在WHERE子句中的列上创建索引。 9.2 索引的类型和特点 在Microsoft SQL Server 2005系统中有两种基本的索引类型:聚集索引和非聚集索引。 除此之外,还有唯一性索引、包含性列索引、索引视图、全文索引及XML索引等。在这些索引类型中,聚集索引和非聚集索引是数据库引擎中索引的基本类型,是理解唯一性索引、包含性列索引、索引视图的基础, 本节主要研究这两种索引类型。 另外,为了更好地理解索引结构,有必要对堆结构有所了解。 最后,简单介绍一下系统访问数据的方式。 堆 堆是不含聚集索引的表,表中的数据没有任何的顺序。 堆的信息记录在sys.partitions目录视图中。每一个堆都可能有多个不同的分区,每一个分区都有一个堆结构,每一个分区在sys.partitions目录视图中都有一行,且index_id=0。也就是说,每一个堆都可能有多个堆结构。 堆结构示意图 聚集索引 聚集索引是一种数据表的物理顺序与索引顺序相同的索引,非聚集索引则是一种数据表的物理顺序与索引顺序不相同的索引。 聚集索引的叶级和非叶级构成了一个特殊类型的B树结构。B树结构中的每一页称为一个索引节点。索引的最低级节点是叶级节点。 在一个聚集索引中,某个表的数据页是叶级,在叶级之上的索引页是非叶级。在聚集索引中,页的顺序是有序的。应该在表中经常搜索的列或按照顺序访问的列上创建聚集索引。其中,用于指定聚集索引第一页地址信息的root_page来自sys.system_internal_allocation_units系统视图中。聚集索引的结构示意图如图9-2所示。 聚集索引的结构示意图 非聚集索引 非聚集索引与聚集索引具有相同的B树结构,但是在非聚集索引中,基础表的数据行不是按照非聚集键的顺序排序和存储,且非聚集索引的叶级是由索引页而不是由数据页组成。 非聚集索引既可以

文档评论(0)

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

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

1亿VIP精品文档

相关文档