第11章 索引与数据完整性.ppt
文本预览下载声明
第11章 索引与数据完整性 了解索引的优点 了解索引的分类 理解聚集索引和非聚集索引的概念 掌握索引的操作 11.1 索引的概述 索引是对数据库表中一个或多个列的值进行排序的结构,用于快速访问数据库表中的特定数据。 索引包括从表中一个或多个列生成的键值以及映射到指定数据的存储位置的指针。 索引是由索引页面组成,每个索引页面中的行都包含逻辑指针,通过该指针可以直接检索到数据,从而加快物理数据的查找。 索引使用B-Tree(平衡树)结构建立。 11.2 索引的优缺点 索引的优点: 提高查询速度 提高连接、ORDER BY和GROUP BY执行的速度 查询优化器依靠索引起作用 强制实施行的唯一性 索引也是有代价的 创建和维护索引需要耗费时间。 索引需要占用物理空间 表中数据更新时,索引需要动态维护 设计索引时,应确保对性能的提高程度大于在存储空间和处理资源方面的代价。 11.3 索引的分类 SQL Server提供的索引类型主要包括:聚集索引、非聚集索引、唯一索引、包含性列索引、全文索引等 按存储结构不同,可将索引分为两种: 聚集索引 非聚集索引 聚集索引和非聚集索引都包括索引页,聚集索引还包括数据页,索引页用来放索引键值和指到下一层的指针,数据页用来存放记录。 B-Tree索引结构 索引的结构是按B-Tree(Balanced Tree)组织的,该结构中的每一页是一个索引节点。 B-Tree的顶端节点称为根节点,底层节点称为叶节点,在根节点和叶节点之间的称为中间节点。B-Tree数据结构从根节点开始,以左右平衡的方式排列数据,中间可以根据需要分成许多层。 使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度。 B-Tree索引结构 例如: 聚集索引的结构: 聚集索引是指表中存储的数据按照索引的顺序存储,即表中记录的物理顺序与索引顺序相同。 聚集索引的一个数据页包含一笔记录,再由多个数据页生成一个中间节点的索引页,接着由数个中间节点的索引页合成更上层的索引页,组合后生成最顶层的根节点的索引页。 11.3 索引的分类 11.3.1 聚集索引 聚集索引的特点: 聚集索引是指表中存储的数据按照索引的顺序存储,即表中记录的物理顺序与索引顺序相同。 一个表只有一个聚集索引。 聚集索引对经常要搜索范围值的列特别有效。使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理顺序上也是相邻的。 聚集索引的检索效率比非聚集索引高,但对数据新增、修改和删除的影响比较大。 如果表中没有创建聚集索引,则在表的主键列上自动创建聚集索引。若有了聚集索引再创建主键,则会自动创建一个以主键为索引的非聚集索引。 11.3 索引的分类 11.3.1 聚集索引 可考虑将聚集索引用于下面几种情况: 包含少量非重复值的列。 使用下列运算符返回一个范围值的查询:BETWEEN、、=、和=。 被连续访问的列。 返回大型结果集的查询。 经常被使用连接或GROUP BY子句的查询访问的列。 要求进行非常快的单行查询的联机事务处理程序。 11.3 索引的分类 11.3.1 聚集索引 * 11.3 索引的分类 11.3.2 非聚集索引 非聚集索引的结构: 非聚集索引不影响表中的数据存储顺序,即数据存储在一个地方,索引存储在另一个地方。 非聚集索引与聚集索引一样有B_Tree结构,但有两个差别: 数据行不按非聚集索引键的顺序排序和存储。 非聚集索引的叶层不包含数据页,而包含索引行。 * * 11.3 索引的分类 11.3.2 非聚集索引 非聚集索引的特点: 非聚集索引对表中的数据进行逻辑排序,不影响表中的数据存储顺序,即数据存储在一个地方,索引存储在另一个地方。 个表可有多个非聚集索引。 索引带有指针指向数据的存储位置。索引中的项目按索引键值的顺序存储,而表中的信息按另一种顺序存储。 在搜索数据值时,先对非聚集索引进行搜索,找到数据值在表中的位置,然后从该位置直接检索数据。 非聚集索引检索效率比聚集索引低,但对数据新增、修改和删除的影响较少。 * 11.3 索引的分类 11.3.2 非聚集索引 可考虑将非聚集索引用于下面的情况: 包含大量非重复值的列。 不返回大型结果集的查询。 返回精确匹配的查询的搜索条件(WHERE子句)中经常使用的列。 在特定的查询中覆盖一个表中的所有列。 经常需要连接和分组的操作。 * 11.4 索引的操作 11.4.1 索引的创建 1.使用SSMS图形界面创建索引 展开要创建索引的表,右单击“索引”→“新建索引” →在打开的“新建索引”窗口中创建索引。 例: 在student表的sclass列上创建一个升序的非聚集索引Q_sclass。 在score表的cno、degree列上创建一个先按cno升序排, c
显示全部