文档详情

《数据库原理与应用》(第三版) 课件 第7章 索引与视图.pdf

发布:2023-09-25约2.92万字共58页下载文档
文本预览下载声明
第7章索引与视图 · 7.1索引概述 · 7.2索引的类型 · 7.3创建索引 · 7.4查看和删除索引 · 7.5视图概述 · 7.6视图的创建与删除 · 7.7查看视图 2023/9/9 第7章索引与视图 7.1索引概述 · 7.1.1什么是索引 索引是依赖于数据表或视图的一种数据库对象,它保存了针对指定数据表 或视图的键值或指针。索引有自己的文件名(即索引文件名),也需要占 用磁盘空间。创建索引的目的为了提高对数据表或视图的搜索效率。 对于数据表来说,索引可以理解为对一个或多个字段值进行排序的结构, 本质上它是指向存储在表中指定列的数据值的指针。在SQL Server中,索 引是用B-树这种数据结构来构造的,通过索引访问数据实际上是寻找一条 从根节点到叶子节点的过程,这个过程一般比直接按顺序访问数据表要高 效得多。这是因为通过索引只需少数几个I/O操作可以在较短的时间内定位 到表中相应的行,而顺序访问则需要从头到尾逐行比较,在平均意义下使 用的时间要多得多。 2023/9/9 7.1索引概述 索引的作用就是提高对数据表的查询效率,但实际情况并不总是这样。如 果对数据表创建过多的索引,反而可能使得对数据的查询效率下降。原因 在于,不但搜索庞大的B-树需要时间,而且SQLServer对这些B-树进行维 护也可能需要付出巨大的代价和开销。因为B-树作为一种数据结构是存放 在数据表以外的地方,需要额外的系统资源,而且当对数据表执行 的时间代价。因此,索引并不是创建得越多就越好。 总之,索引是独立于数据表的一种数据库对象,它保存了针对于指定数据 表的键值和指针。索引文件也需要占用磁盘空间。创建索引的目的是为了 提高查询效率。 2023/9/9 7.1索引概述 7.1.2何种情况下创建索引 过多地创建索引反而降低查询效率,所以如何适当地创建索引,这是问题的 关键。一般来说,当数据表很大的时候,对于一些用于查询操作比较频繁的 字段,应该对其创建索引,而对于其他字段则少创建索引。 设计良好的索引可以减少磁盘的I/O操作,降低索引对系统资源的消耗,提高 需要维护索引,因此可能会降低这些语句的执行效率。 索引的创建是由用户来完成,而索引的使用则是由SQL Server的查询优化器 来自动实现。需要注意的是,并不是所有已创建的索引都会在查询操作中自 动被使用。一个索引被使用与否是由SQL Server的查询优化器来决定。 2023/9/9 7.1索引概述 7.1.3索引的原理——B-树 索引采用的数据结构是B-树,即在逻辑上索引是一棵B-树,因此了解B-树有助于对 索引原理的理解。 考虑空树): (1)树中每个节点最多有m棵子树。 (2)根节点除外,所有非叶子节点至少都包含m/2棵子树。 (3)若根节点不是叶子节点,则根节点至少两棵子树。 (4)所有非叶子节点都包含相应的关键信息,一个包含k+1棵子树的非叶节点恰好包 含k个关键字。 … K K? k Ao A?K?A? Ak ),而Ai+1所指子树中所有节点的关键字均大于Ki(i=1,2,...,k-1) 2023/9/9 7.1索引概述 (5)所有的叶子节点都出现在同一层次上,并且叶子节点不包含任何关键字信息。 例如,图7.1表示了一棵四阶的B-树。 1 19 模节点 1 15
显示全部
相似文档