第十章管理索引 了解索引的概念和作用 了解索引的类型 使用企业管理器创建和管理索引 使用TSQL语句创建和管理索引 选择和维护索引
1 第十章 管理索引 • 了解索引的概念和作用 • 了解索引的类型 • 使用企业管理器创建和管理索引 • 使用T-SQL语句创建和管理索引 • 选择和维护索引
什么叫索引 数据库中的索引与书籍中的索引类似,在一本 书中,利用索引可以快速查找所需信息,无须 阅读整本书。在数据库中,索引使数据库程序 无须对整个表进行扫描,就可以在其中找到所 需数据。书中的索引是一个词语列表,其中注 明了包含各个词的页码
2 什么叫索引 • 数据库中的索引与书籍中的索引类似,在一本 书中,利用索引可以快速查找所需信息,无须 阅读整本书。在数据库中,索引使数据库程序 无须对整个表进行扫描,就可以在其中找到所 需数据。书中的索引是一个词语列表,其中注 明了包含各个词的页码
索引是一个单独的、物理的数据库结构,是对 数据库表中一个或多个列的值进行排序的结构。 索引提供指针以指向存储在表中指定列的数据 值,然后根据指定的排序次序排列这些指针。 索引是依赖于表建立的,它提供了数据库中编 排表中数据的内部方法。一个表的存储是由两 部分组成的:一部分用来存放表的数据页面, 另一部分存放索引页面。索引就存放在索引页 面上,通常索引页面相对于数据页面来说小得 多。当进行数据检索时,系统先搜索索引页面, 从中找到所需数据的指针,再直接通过指针从 数据页面中读取数据。从某种程度上可以把数 据库看作一本书,把索引看作书的目录,通过 目录查找书中的信息显然比没有目录的书方便 快捷
3 • 索引是一个单独的、物理的数据库结构, 是对 数据库表中一个或多个列的值进行排序的结构。 索引提供指针以指向存储在表中指定列的数据 值,然后根据指定的排序次序排列这些指针。 • 索引是依赖于表建立的,它提供了数据库中编 排表中数据的内部方法。一个表的存储是由两 部分组成的:一部分用来存放表的数据页面, 另一部分存放索引页面。索引就存放在索引页 面上,通常索引页面相对于数据页面来说小得 多。当进行数据检索时,系统先搜索索引页面, 从中找到所需数据的指针,再直接通过指针从 数据页面中读取数据。从某种程度上可以把数 据库看作一本书,把索引看作书的目录,通过 目录查找书中的信息显然比没有目录的书方便 快捷
索引(一) 在数据库中,索引使数据库程序无须对 整个表进行扫描,就可以在其中找到所 需数据。利用索引可以大大提高系统的 性能,表现在: 通过创建惟一索引,可以保证数据记录 的惟一性。 大大加快数据检索速度 加速表与表之间的连接
4 索引(一) • 在数据库中,索引使数据库程序无须对 整个表进行扫描,就可以在其中找到所 需数据。利用索引可以大大提高系统的 性能,表现在: • 通过创建惟一索引,可以保证数据记录 的惟一性。 • 大大加快数据检索速度 • 加速表与表之间的连接
索引(二) ·缺点: 占用储存空间 在表中插入或更新表中数据时,将有额外 的操作来维护索引 过多的索引起反作用。 分类 聚集索引 非聚集索引
5 索引(二) • 缺点: • 占用储存空间 • 在表中插入或更新表中数据时,将有额外 的操作来维护索引 • 过多的索引起反作用。 • 分类: 聚集索引 非聚集索引
聚集索引 聚集索引对表的物理数据页中的数据按列进行排序, 然后再重新存储到磁盘上。换句话说,如果在一个 表中建立了聚集索引,则表中的数据页会按照该索 引的顺序来存放 优点:查找数据很快 缺点:完全重排数据,要相当于数据所占用空间的 120% 注意: 由于一个表只能有一种实际的存储顺序,因此,一个表只 能有一个聚集索引 创建非聚集索引之前要先创建聚集索引 关键值的惟一性使用 UNIQUE或标识符明确维护 保证有足够的临时空间来创建聚集索引
6 聚集索引 • 聚集索引对表的物理数据页中的数据按列进行排序, 然后再重新存储到磁盘上。换句话说,如果在一个 表中建立了聚集索引,则表中的数据页会按照该索 引的顺序来存放。 • 优点:查找数据很快 • 缺点:完全重排数据,要相当于数据所占用空间的 120% • 注意: –由于一个表只能有一种实际的存储顺序,因此,一个表只 能有一个聚集索引 –创建非聚集索引之前要先创建聚集索引 –关键值的惟一性使用UNIQUE或标识符明确维护 –保证有足够的临时空间来创建聚集索引
非聚集索引 非聚集索引具有完全独立于数据行的结 构。使用非聚集索引不用将物理数据页 中的数据按列排序。通俗地说,不会影 响数据表中记录的实际存储顺序。因此, 可以在一个表中创建多个非聚集索引。 非聚集索引需要更多的空间,检索效率 也较低。一个表中除建立一个聚集索引 外,还可以建立249个非聚集索引 例子:聚集索引和非聚集索引的例子见 p226的表10-1和表10-2
7 非聚集索引 • 非聚集索引具有完全独立于数据行的结 构。使用非聚集索引不用将物理数据页 中的数据按列排序。通俗地说,不会影 响数据表中记录的实际存储顺序。因此, 可以在一个表中创建多个非聚集索引。 • 非聚集索引需要更多的空间,检索效率 也较低。一个表中除建立一个聚集索引 外,还可以建立249个非聚集索引。 • 例子:聚集索引和非聚集索引的例子见 p226的表10-1和表10-2
唯一索引和组合索引 无论是聚集索引还是非聚集索引,根据 索引键值是否重复,可以判定为是否为 唯一索引;根据索引字段的组成情况, 可以判定是否为组合索引
8 唯一索引和组合索引 • 无论是聚集索引还是非聚集索引,根据 索引键值是否重复,可以判定为是否为 唯一索引;根据索引字段的组成情况, 可以判定是否为组合索引
唯一索引 ·若希望在表中创建唯一索引,则该字段或字段 组合的值在表中必须具有唯一性,即表中任何 两条记录的索引值都不能相同 同样,若表中基于某个字段或字段组合存在两 条以上的记录中有相同的值,将不能基于该字 段或字段组合创建唯一索引。 ·注意:建立唯一索引的字段最后也设置为not nu1l,因为两个nu11值将被认为是重复的字段 值 ·向表中添加记录或修改记录时,系统将检查添 加的记录或修改后的记录是否会造成唯一索引 键值的重复。若造成唯一索引键值的重复,系 统将拒绝执行该操作
9 唯一索引 • 若希望在表中创建唯一索引,则该字段或字段 组合的值在表中必须具有唯一性,即表中任何 两条记录的索引值都不能相同。 • 同样,若表中基于某个字段或字段组合存在两 条以上的记录中有相同的值,将不能基于该字 段或字段组合创建唯一索引。 • 注意:建立唯一索引的字段最后也设置为not null,因为两个null值将被认为是重复的字段 值。 • 向表中添加记录或修改记录时,系统将检查添 加的记录或修改后的记录是否会造成唯一索引 键值的重复。若造成唯一索引键值的重复,系 统将拒绝执行该操作
复合索引 若基于多个字段的组合创建索引,则称 该索引为复合索引。 注意:符合索引既可以是唯一索引,也 可以不是唯一索引。即使是唯一索引, 这个字段的组合的取值不能重复,但是 单独的字段值依然可以重复
10 复合索引 • 若基于多个字段的组合创建索引,则称 该索引为复合索引。 • 注意:符合索引既可以是唯一索引,也 可以不是唯一索引。即使是唯一索引, 这个字段的组合的取值不能重复,但是 单独的字段值依然可以重复