《第8章索引和查询优化.ppt》由会员分享,可在线阅读,更多相关《第8章索引和查询优化.ppt(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、SQL Server 2005 基础教程 清华大学出版社第8 章 索引和查询优化SQL Server 2005 基础教程 清华大学出版社教学目标教学过程7/16/2023 1SQL Server 2005 基础教程 清华大学出版社教学目标l 理解索引的优点和缺点l 理解堆的结构特点l 理解聚集索引和非聚集索引的特点l 理解索引的类型l 使用CREATE INDEX 语句创建索引的方式l 理解索引统计信息的特点和获得方式l 理解查询优化的方式7/16/2023 2SQL Server 2005 基础教程 清华大学出版社教学过程8.1 概述8.2 索引的类型和特点8.3 创建索引 8.4 索引维护
2、8.5 查询优化7/16/2023 3SQL Server 2005 基础教程 清华大学出版社8.1 概述l 在Microsoft SQL Server 系统中,可管理的最小空间是页。一个页是8KB 字节的物理空间。插入数据的时候,数据就按照插入的时间顺序被放置在数据页上。一般地,放置数据的顺序与数据本身的逻辑关系之间是没有任何联系的。因此,从数据之间的逻辑关系方面来讲,数据是乱七八糟堆放在一起的。l 数据的这种堆放方式称为堆。当一个数据页上的数据堆放满之后,数据就得堆放在另外一个数据页上,这时就称为页分解。l 索引是一种与表或视图关联的物理结构,可以用来加快从表或视图中检索数据行的速度。7/
3、16/2023 4SQL Server 2005 基础教程 清华大学出版社8.2 索引的类型和特点l 在Microsoft SQL Server 2005 系统中,有两种基本的索引类型:聚集索引和非聚集索引。除此之外,还有惟一性索引、包含性列索引、索引视图、全文索引、XML 索引等。在这些索引类型中,聚集索引和非聚集索引是数据库引擎中索引的基本类型,是理解惟一性索引、包含性列索引、索引视图的基础,本节主要研究者两种索引类型。l 另外,为了更好地理解索引结构,有必要对堆结构有所了解。l 最后,简单介绍一下系统访问数据的方式。7/16/2023 5SQL Server 2005 基础教程 清华大学
4、出版社堆 l 堆是不含聚集索引的表,表中的数据没有任何的顺序。堆的信息记录在sys.partitions 目录视图中。每一个堆都可能有多个不同的分区,每一个分区都有一个堆结构,每一个分区在sys.partitions 目录视图中都有一行,且index_id=0。也就是说,每一个堆都可能有多个堆结构。7/16/2023 6SQL Server 2005 基础教程 清华大学出版社聚集索引 l 聚集索引是一种数据表的物理顺序与索引顺序相同的索引,非聚集索引则是一种数据表的物理顺序与索引顺序不相同的索引。l 聚集索引的叶级和非叶级构成了一个特殊类型的B 树结构。B 树结构中的每一页称为一个索引节点。索
5、引的最低级节点是叶级节点。在一个聚集索引中,某个表的数据页是叶级,在叶级之上的索引页是非叶级。在聚集索引中,页的顺序是有序的。7/16/2023 7SQL Server 2005 基础教程 清华大学出版社非聚集索引 l 非聚集索引与聚集索引具有相同的B 树结构,但是,在非聚集索引中,基础表的数据行不是按照非聚集键的顺序排序和存储,且非聚集索引的叶级是由索引页而不是由数据页组成。l 非聚集索引既可以定义在表或视图的聚集索引上,也可以定义在表或视图的堆上。非聚集索引中的每一个索引行都是由非聚集键值和行定位符组成,该行定位符指向聚集索引或堆中包含该键值的数据行。如果表或视图中没有聚集索引(堆),则行
6、定位符是指向行的指针RID,RID 由文件标识符ID、页码和页上的行数生成。7/16/2023 8SQL Server 2005 基础教程 清华大学出版社其他类型的索引 l 除了聚集索引和非聚集索引之外,Microsoft SQL Server 2005 系统还提供了一些其他类型的索引或索引表现形式,这些内容包括 惟一性索引 包含性列索引 索引视图 全文索引 XML 索引7/16/2023 9SQL Server 2005 基础教程 清华大学出版社访问数据的方式 l 第一种方法是表扫描,就是指系统将指针放在该表的表头数据所在的数据页上,然后按照数据页的排列顺序,一页一页地从前向后扫描该表数据所
7、占有的全部数据页,直至扫描完表中的全部记录。l 第二种方法是使用索引查找。7/16/2023 10SQL Server 2005 基础教程 清华大学出版社8.3 创建索引l 在Microsoft SQL Server 2005 系统中,既可以直接创建索引,也可以间接创建索引。当直接创建索引时,既可以使用CREATE INDEX 语句,也可以使用图形工具。7/16/2023 1 1SQL Server 2005 基础教程 清华大学出版社直接方法和间接方法 l 可以把创建索引的方式分为直接方法和间接方法。l 直接创建索引的方法就是使用命令和工具直接创建索引。l 间接创建索引就是通过创建其他对象而附
8、加创建了索引,例如在表中定义主键约束或惟一性约束时,同时也创建了索引。l 虽然,这两种方法都可以创建索引,但是,它们创建索引的具体内容是有区别的。7/16/2023 12SQL Server 2005 基础教程 清华大学出版社使用CREATE INDEX 语句 l 在Microsoft SQL Server 2005 系统中,使用CREATE INDEX 语句可以在关系表上创建索引7/16/2023 13SQL Server 2005 基础教程 清华大学出版社 数据库引擎优化顾问 l 使用Microsoft SQL Server 2005 的数据库引擎优化顾问,用户可以方便地选择和创建索引、索
9、引视图和分区的最佳集合。数据库引擎优化顾问分析一个或多个数据库的工作负荷和实现,其中工作负荷是对要优化的一个或多个数据库执行的一组Transact-SQL 语句。数据库引擎优化顾问的输入是由SQL Server Profiler 生成的跟踪文件、指定的跟踪表或工作负荷。数据库引擎优化顾问的输出是修改数据库的物理设计结构的建议,其中物理设计结构包括聚集索引、非聚集索引、索引视图、分区等。7/16/2023 14SQL Server 2005 基础教程 清华大学出版社查看索引信息 l 在Microsoft SQL Server 2005 系统中,可以使用一些目录视图和系统函数查看有关索引的信息。l
10、 这些目录视图和系统函数如表8-1 所示。7/16/2023 15SQL Server 2005 基础教程 清华大学出版社8.4 索引维护l 索引在创建之后,由于数据的增加、删除、更新等操作使得索引页发生碎块,因此为了提高系统的性能,必须对索引进行维护。l 这些维护包括查看碎块信息、维护统计信息、分析索引性能、删除重建索引等。7/16/2023 16SQL Server 2005 基础教程 清华大学出版社查看索引统计信息 l 索引统计信息是查询优化器用来分析和评估查询、确定最优查询计划的基础数据。一般地,用户可以通过常用的方式访问指定索引的统计信息。一种方式是使用DBCC SHOW_STATI
11、STICS 命令 另一种是使用图形化工具7/16/2023 17SQL Server 2005 基础教程 清华大学出版社查看索引碎片信息 l 可以使用两种方式查看有关索引的碎片信息,使用sys.dm_db_index_physical_stats 系统函数和使用图形化工具。注意,sys.dm_db_index_physical_stats 系统函数替代了以前版本中的DBCC SHOWCONTIG命令。7/16/2023 18SQL Server 2005 基础教程 清华大学出版社维护索引统计信息l 统计信息是存储在Microsoft SQL Server 中的列数据的样本。这些数据一般地用于索
12、引列,但是还可以为非索引列创建统计。Microsoft SQL Server 维护某一个索引关键值的分布统计信息,并且使用这些统计信息来确定在查询进程中哪一个索引是有用的。查询的优化依赖于这些统计信息的分布准确度。查询优化器使用这些数据样本来决定是使用表扫描还是使用索引。l 当表中数据发生变化时,Microsoft SQL Server周期性地自动修改统计信息。索引统计被自动地修改,索引中的关键值显著变化。7/16/2023 19SQL Server 2005 基础教程 清华大学出版社8.5 查询优化l 在很多情况下,为了达到同样的结果,可以写出多个不同的查询形式。但是,不同的查询形式往往消耗的时间不相同,因此有不同的性能。如何提高查询语句的性能呢?下面,介绍Microsoft SQL Server 查询优化器和优化隐藏的特点。l 在查询语句中,Microsoft SQL Server 系统是如何判断是否使用索引或使用哪些索引呢?一般地,系统是根据索引的选择性和索引类型。如果索引列的选择性很高,也就是说,索引列中的只有很少几行数据将被选中,那么应该使用索引。系统如何得到选择性呢?这就需要系统的统计信息来确定。下面,通过一个示例讲述系统是如何选择索引执行查询操作的。7/16/2023 20