《数据库原理与应用》(第三版) 课件 第7章 索引与视图.pdf
文本预览下载声明
第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
显示全部