内容正文:
数据库表数据的操纵
第四章
1
目 录
2
4.1 单表查询
4.2 分组统计查询
4.3 多表连接查询
4.4 嵌套查询
4.5 数据更新
4.6 查询优化——索引
4.5 查询优化-索引
理解索引的概念。
掌握索引的优点、分类、规则和作用。
知识目标
能够使用“对象资源管理器”和
T-SQL语句创建和管理索引。
能力目标
5
学生基本信息快速查询
学生需要根据本人学号或姓名在数据库中查询个人信息。学校目前在校生达到5000人,数据库中存储的信息量相当大,这给查询工作带来一定的不便。因此,希望通过某种方式来提高查询速度。
、
任务描述
6
索引对表中记录按查询字段的大小进行排序,可以提高查询的速度。在本任务中要提高学生按学号和姓名查询信息的速度,可以在学生表中分别为学号列和姓名列创建索引。
任务分析
4.6.1 索引的概念
索引是以数据表的列为基础创建的数据库对象,它保存着表中排序的索引列,并且记录了索引列在数据表中的物理存储位置,实现了对表中数据的逻辑排序。
索引由一行行的记录组成,每一行记录都包含数据表中一列或若干列值的集合和相应指向表中数据页的逻辑指针。
索引页是数据库中存储索引的数据页。索引页存储查询数据行的关键字及该数据行的地址指针。它类似于汉语字典中按拼音或笔画排序的目录页。在对数据进行查询时,系统先搜索索引页,从索引项中找到所需数据的指针,再直接通过指针从数据页读取数据。
知识导读
4.6.2 索引的优点
在数据库中创建索引进行数据查询具有以下优点:
保证数据记录的唯一性。唯一性索引的创建可以保证表中的数据记录不重复。
提高数据查询速度。
提高表与表之间的连接速度,并且实现表与表之间的参照完整性。
在使用分组和排序子句进行数据查询时,可以显著减少查询中分组和排序的时间。
知识导读
4.6.2 索引的分类
在SQL Server系统中,索引有两种分类方式。
(1)按照存储结构不同分为聚集索引和非聚集索引。
(2)按照维护和管理方式不同分为唯一性索引、复合索引和系统自动创建的索引。
1.聚集索引
聚集索引(Clustered Index)是指数据行的物理存储顺序与索引的顺序完全相同,即索引的顺序决定了表中行的存储顺序。聚集索引对于那些经常要搜索范围值的列特别有效。使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行物理相邻。
2.非聚集索引
非聚集索引(Nonclustered Index)具有完全独立于数据行的结构。非聚集索引的顺序与数据的物理存储顺序不一致,索引中的项目按索引键值的顺序存储,而表中的数据按操作系统指定的物理存储顺序存储。聚集索引的查询速度比非聚集索引快,但非聚集索引的维护比聚集索引容易。
知识导读
4.6.3 索引的分类
3.唯一性索引
唯一性索引(Unique Index)可以确保所有数据行中任意两行的被索引列(不包括NULL)无重复值。
对聚集索引和非聚集索引都可以使用UNIQUE关键字创建唯一性索引。如果是复合唯一性索引(多列,最多16列),则该索引可以确保索引列中每个组合都是唯一的。
唯一性索引不允许有两行具有相同的索引值,在创建唯一性索引时,如果该索引列上已经存在重复值,系统会报错。
提示:
主键一定是唯一性索引,但是唯一性索引不一定是主键。
一个表可以有多个唯一性索引,但是主键只能有一个。
主键不允许为空值,但是唯一性索引允许为空值。
知识导读
4.6.4 索引的规则
在SQL Server系统中,使用索引时应注意以下规则:
索引的使用对用户是透明的,用户不需要在执行T-SQL语句时指定使用哪个索引及如何使用索引。索引一旦创建,当在表上进行DML操作时,系统会自动维护索引,并决定何时使用索引。
由于聚集索引改变表的物理顺序,所以应先创建聚集索引,后创建非聚集索引。
每个表只能有一个聚集索引,定义有主键的列会自动创建唯一性聚集索引。
在定义有外键的列上可以创建索引。有外键的列通常用于数据表之间的连接,在其上创建索引可以提高数据表之间的连接速度。
在经常排序查询的列上最好创建索引。因为索引已经排序,其指定的范围是连续的。利用索引的排序,可提高排序查询的速度。
在指定范围内需要快速或频繁查询的列最好创建索引。
在查询中很少涉及的列或重复值比较多的列上不要创建索引。在查询中很少使用的列,有无索引并不能提高查询速度,相反会增加系统维护时间和消耗系统空间。例如,性别列只有列值“男”和“女”,增加索引并不能显著提高查询速度。
在定义为text、ntext或image数