1、第八章 索引,内容:,1.案例分析 2.索引概述 3.索引分类 4.索引操作 5.习题,1. 案例分析,在南海科技公司人事管理系统中,用户经常需要通过Web应用程序和Windows应用程序对数据库中的数据进行查询,例如员工需要对自己的考勤状况、请假情况、工资状况等信息进行查询。那么在设计后台数据库时就要考虑多用户同时访问数据库的情形,考虑数据库的响应时间,即应该保证数据库的性能。SQL Server中的索引很好地为我们解决了这个问题。,2. 索引概述,一般情况下,数据库在进行查询操作时需要对整个表进行数据搜索。 当表中的数据很多时,搜索数据就需要很长的时间,这就造成了服务器的资源浪费。所以为了
2、提高检索数据的能力,SQL Server引入了索引机制。,索引是为了加速对表中数据行的检索而创建的一种分散的存储结构,它是一个单独的、物理的数据库结构。索引是数据库的一个表中所包含的值的列表,其中注明了表中包含各个值的行所在的存储位置。,(1).索引的概念,索引是依赖于表建立的,它提供了数据库中编排表中数据的内部方法。存储一个表需要两部分,一部分用来存放表的数据页面,另一部分存放索引页面。索引就存放在索引页面上。,(2)索引的优缺点,加速数据检索 加快表与表之间的连接 在使用Order by和Group by等子句进行数据检索的时候,可以减少分组和排序的时间。 有利于SQL Server对查询
3、进行优化。 强制实施行的惟一性,(2)索引的优缺点,创建索引要花费时间和占有存储空间 建立索引加快了数据检索速度,却减慢了数据修改速度,(3)索引结构,图7-1 索引的B树结构,3.索引的分类,根据索引的顺序与数据表的物理顺序是否相同,可以将索引分为两类: 聚集索引(Clustered Index) 非聚集索引(Nonclustered Index),(1)聚集索引 -索引顺序与数据顺序相同,(2)非聚集索引 -索引顺序与数据顺序不相同,4.索引操作,1). 创建索引 2). 创建索引视图 3). 查看索引 4). 删除索引 5). 维护索引,CREATE INDEX语句创建索引,CREATE
4、UNIQUE CLUSTERED/ NONCLUSTERED INDEX index-name ON table-name(column-name,column-name),UNIQUE ,创建了其每一列应包含不同索引值的索引 CLUSTERED ,指出了其数据在索引上进行排序的簇索引 NONCLUSTERED ,指出了只逻辑地组织数据的非簇索引。 index-name ,指出索引的名称 table-name , 指出包含要创建索引的属性的表名 column-name ,指出将要创建索引的一个或多个列的名称。,【例8-1】删除表 tblLeave上的主键,为表 tblLeave的LeaveID
5、字段重新创建一个聚集索引。,【例8-2】为表tblSalary中的EmployeeID和SalaryTime创建一个唯一的复合索引。,(2)查看索引,【例8-3】 查看表tblEmployee的索引。,use SouthSea go exec sp_helpindex tblEmployee,(3)删除索引,【例8-4】删除表tblEmployee中的索引non_Email。,use SouthSea go drop index tblEmployee.non_Email,5.习题,1什么是索引? 2索引有何优点? 3什么是聚集索引?什么是非聚集索引? 4在一个表中可以建立多个聚集索引吗?可以建立多个非聚集索引吗? 5UNIQUE索引可以建立在“值为NULL”的列上吗?,6下列哪类数据不适合创建索引?_ A经常被查询搜索的列,如经常在Where子句中出现的列 B是外键或主键的列 C包含太多重复选用值的列 D在ORDER BY子句中使用的列,9下列关于索引的描述错误的是哪一项?_ A对表中的任何数据列都可以添加索引 B创建索引的列最好不要含有许多重复的值 C一般不给很少使用的列添加索引 D并不是数据库中的聚集索引越多,搜索效率就越高,10_确保索引键不包含重复的值。 A聚集索引 B非聚集索引 C索引视图 D唯一索引,Thank You!,