第8章 索引及查询优化(上海电力学院).ppt

第8章 索引及查询优化(上海电力学院).ppt

ID:61741538

大小:3.71 MB

页数:80页

时间:2020-02-06

第8章  索引及查询优化(上海电力学院).ppt_第1页
第8章  索引及查询优化(上海电力学院).ppt_第2页
第8章  索引及查询优化(上海电力学院).ppt_第3页
第8章  索引及查询优化(上海电力学院).ppt_第4页
第8章  索引及查询优化(上海电力学院).ppt_第5页
资源描述:

《第8章 索引及查询优化(上海电力学院).ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第八章索引及查询优化本章要点:掌握索引的概念、分类。熟悉索引的方法。掌握T-SQL索引语句。了解查询优化的一般准则。了解查询优化算法。掌握简单查询设计方法。内容提要:8.1索引8.1.1聚集索引8.1.2非聚集索引8.1.3索引查询效率实例分析(了解)8.1.4索引结构(了解)8.1.5SQLserver2000索引的应用8.2查询优化8.2.1查询优化概述8.2.2查询优化准则8.1索引❁无须对整个表进行扫描,就可以在其中找到所需数据。❁可以单个列建立索引,也可以为一组列建立索引;索引采用B树结构。❁B树按搜索关键字排序。❁通常应为数据查询所使用的列创建索引。目的:

2、动态地保持高的检索效率!采的平衡m叉树结构!实例:在SQLServer2000提供的pubs示例数据库中,employee表在emp_id列上有一个索引。下面的示意图显示索引如何存储每个emp_id值并指向表中包含各个值的数据行。employee表在emp_id列上的索引顺序查找平均时间复杂度为O(n/2)!如:二分查找平均时间复杂度为O(log2n)!❁设emp_id列已建索引,思考:usepubsselect*fromemployeewhereemp_idlike'L%'查询方法?❁SQLServer为某些类型的约束(如PRIMARYKEY和UNIQUE约束)自动

3、创建索引。❁缺点:索引是有代价的。为了维护索引,对数据进行插入、更新、删除操作的命令所花费的时间会更长。❁在设计和创建索引时,应确保对性能的提高程度大于在存储空间和处理资源方面的代价。※表索引1、MicrosoftSQLServer2000支持在表中任何列(包括计算列)上定义的索引。2、如果一个表没有创建索引,则数据行不按任何特定的顺序存储。这种结构称为堆集。SQLServer索引的两种类型为:聚集索引、非聚集索引8.1.1聚集索引:1、聚集索引将表中的记录行与索引键值以同样的物理顺序存储;类似于电话簿。2、默认表按主键创建聚集索引。3、每个表只能有一个聚集索引。4、

4、如果表没有聚集索引,则其数据行按堆集方式存储。(堆集在sysindexes中的标识,字段indid=0。)实例4、聚集索引结构:1)聚集索引在sysindexes中标识,字段indid=1。2)MicrosoftSQLServer2000将索引组织为B+树。索引内的每一页包含一个页首,页首后面跟着索引行。3)每个索引行都包含一个键值以及一个指向较低级页或数据行的指针。实例4)索引的每个页称为索引节点。B树的顶端节点称为根节点。索引的底层节点称为叶节点。5)同级索引中的页链接在双向链接列表中。实例6)聚集索引:数据页组成叶节点。根和叶之间的任何索引级统称为中间级。7)聚

5、集索引,sysindexes.root指向它的顶端。实例聚集索引的结构返回Northwind.customers在customerID列的聚簇索引数据按索引关键字排序和存储,索引的叶层是表格的实际数据Filenumber:pagenumber返回聚簇索引是唯一索引,如果键值存在重复值,则内部增加一个计数器,使每个关键字唯一!Customers在city列上的聚簇索引键值不唯一的聚簇索引Customers按customerID建立了簇索引,customerID值唯一。Select*fromcustomersWherecustomerID=‘ANTON’使用了簇索引的查找

6、运行下列查询:Selectid,indid,rootFromsysindexesWhereid=OBJECT_ID(‘customers’)得到结果:Idindidroot---------------------------------------------------20415830710x4B0000000100Indid值为1,表示使用聚集索引,(使用堆时值为0)。根地址是索引的大门。SQLSERVER通过根地址扫描页面,寻找要经过的路径。叶层页面是链接的。使用了簇索引的查找,该customers表现在按city列建立簇索引,city值不唯一聚集索引适用于:

7、•大量非重复值的列。•使用下列运算符返回一个范围值的查询:BETWEEN、>、>=、<和<=。•被连续访问的列。•返回大型结果集的查询。•经常被使用联接或GROUPBY子句的查询访问的列;•OLTP类型的应用程序,这些程序要求进行非常快速的单行查找(一般通过主键)。应在主键上创建聚集索引。◆聚集索引不适用于:•频繁更改的列•宽键列取值过长。8.1.2非聚集索引(与书本目录类似)❀非聚簇索引的特点:1)索引与数据行的存放顺序无关2)索引作为表的附加信息3)有利于单行查询,不利于范围查询❀非聚集索引可以在有聚集索引的表、堆集或索引视图上定义。❀在非聚集索

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。