SQLServer2008数据库及应用教学课件作者第4版徐人凤电子课件单元8实现索引课件

上传人:E**** 文档编号:91252302 上传时间:2019-06-26 格式:PPT 页数:24 大小:61KB
返回 下载 相关 举报
SQLServer2008数据库及应用教学课件作者第4版徐人凤电子课件单元8实现索引课件_第1页
第1页 / 共24页
SQLServer2008数据库及应用教学课件作者第4版徐人凤电子课件单元8实现索引课件_第2页
第2页 / 共24页
SQLServer2008数据库及应用教学课件作者第4版徐人凤电子课件单元8实现索引课件_第3页
第3页 / 共24页
SQLServer2008数据库及应用教学课件作者第4版徐人凤电子课件单元8实现索引课件_第4页
第4页 / 共24页
SQLServer2008数据库及应用教学课件作者第4版徐人凤电子课件单元8实现索引课件_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《SQLServer2008数据库及应用教学课件作者第4版徐人凤电子课件单元8实现索引课件》由会员分享,可在线阅读,更多相关《SQLServer2008数据库及应用教学课件作者第4版徐人凤电子课件单元8实现索引课件(24页珍藏版)》请在金锄头文库上搜索。

1、单元 8 实现索引,深圳职业技术学院 大型数据库课程组,大型数据库,学习目标,【知识目标】 理解索引的作用。 了解索引的种类和使用方法。 熟练掌握创建索引的方法。 掌握重新命名索引、删除索引的方法。 掌握索引分析与维护的方法。 【技能目标】 会根据需要创建索引。 会重新命名索引。 会删除索引。 会分析与维护索引。,任务陈述,学生选课数据库中的课程表、学生表、学生选课表、班级表和系部表,在需要时可查看这些表中的数据。在用户查看这些表的数据时,提出希望提高查询数据的速度。,索引,问题提出:需要按照学号、姓名查询数据,并且希望提高查询的速度。 【分析】StuNo 是Student表的主键列,StuN

2、o值惟一;StuName为非主键列,因会有重名所以值不惟一。 如果提高查询学号,,索引,索引(INDEX):是对数据库表中一个列或多个列的值(称为索引值)进行排序的结构。一个表可以创建多个索引。检索数据时,通过相应索引的索引值所指向的表中的数据行,能快速查找到所需要的数据。 如果索引不当,会加大更新数据的成本。 索引的不同分类: 聚集索引和非聚集索引 主键索引和非主键索引 惟一索引和非惟一索引 单列索引和复合索引,索引,聚集( CLUSTERED)索引:数据行的物理存储顺序与索引顺序完全相同。每个表只能有一个聚集索引。 非聚集( NONCLUSTERED )索引:不改变表中数据行的物理存储数序

3、。它建立一个逻辑表,记录索引值在表中的实际存储位置。一个表上最多可以建立249个非聚集索引。 创建索引时如果没给出CLUSTERED 或NONCLUSTERED,则默认创建非聚集索引。,索引,主键索引: 默认情况下,创建主键约束时自动创建基于主键的聚集索引。在创建聚集索引时,可以指定填充因子(默认值为0),以便在索引页上保留一定百分比的空间,减少发生索引页拆分的情况。 非主键索引:在非主键的属性列上创建的索引,一般都是非聚集索引。,索引,惟一( UNIQUE )索引: 索引列值不会出现重复值。在创建主键约束或惟一约束时,会自动为这些约束创建惟一索引;也可以在创建索引时使用UNIQUE选项。 非

4、惟一索引: 索引列值不惟一。 单列索引:基于表中单列创建的索引。 复合索引:基于表中多个列所创建的索引。应先定义最可能具有惟一性的属性列。,何时使用索引,如果已经创建了两个索引:一个是基于StuNo列的索引(聚集),另一个是基于StuName列的索引, 何时使用这些索引? 查询时SQL Server会自动选择与查询相匹配的索引。 执行如下查询语句时,可能会使用基于StuNo列的索引: SELECT * FROM Student WHERE StuNo=00000001 执行如下查询语句时,可能会使用基于 StuName的索引: SELECT * FROM Student WHERE StuNa

5、me=林斌,如何提高系统性能,为了提高系统的性能,可将索引创建在与数据文件、日志文件不同的存储设备上。,创建索引,创建索引,方法: 使用Management Studio创建索引 使用CREATE INDEX语句 CREATE UNIQUE CLUSTERED| NONCLUSTERED INDEX index_name ON table_name(column_name,),创建索引,【问题81】用户需要按照学生姓名查询信息,希望提高其查询速度。 该题在Student表上创建基于StuName列、名为IX_StuName的索引。 【问题82】使用Transcact-SQL语句。用户需要按照课

6、程名查询信息,希望提高查询速度。 该题在Student表上创建基于StuNo列、名为IX_StuNo的索引,复合索引,在(列1,列2)上创建的复合索引与在(列2,列1)上创建的复合索引是不同的。 查询数据时,只有在WHERE子句中使用了复合索引的第1个列时才会使用所创建的复合索引。 复合索引中列的顺序很重要:在次序上首先定义最具惟一性的列。,重命名索引,重命名索引: EXEC SP_RENAME table_name.old_index_name,new_index_name 【问题83】使用Transcact-SQL语句。将Student表的IX_StuName索引重新命名为IX_StuNa

7、meNew。 【为保证本书的连贯性,重新命名后请按原样恢复】,删除索引,使用Management Studio 使用SQL语句: DROP INDEX table_name.index_name 【问题84】使用SQL Server Management Studio删除Student表上名为IX_StuName的索引。 【为保证本书的连贯性,删除后请按原样恢复】 【问题85】使用Transcact-SQL语句删除Course表上名为IX_CouName的索引。 思考:可以删除Student表的聚集索引吗?,注意事项,创建非聚集索引之前需要先创建聚集索引。 不能用DROP INDEX语句删除由

8、PRIMARY KEY约束或UNIQUE约束创建的索引。要删除这些索引必须先删除PRIMARY KEY约束或UNIQUE约束。 在删除聚集索引时,表中的所有非聚集索引都将被重建。,显示索引信息,显示索引信息: SP_HELPINDEX table_name,显示查询计划,索引分析:可以查看查询时系统是否使用了所创建的索引。 set showplan_all on SELECT语句 set showplan_all off 【问题87】在Xk数据库中的Student表上查询姓林学生的信息,并分析哪些索引被系统采用。 【问题88】在Xk数据库中的Student表上查询学号为00000001的学生信

9、息,并分析哪些索引被系统采用。,显示磁盘活动量,显示磁盘读取信息: 设置显示磁盘IO统计选项为: SET STATISTICS ON|OFF 【问题89】在Xk数据库中的Student表上查询姓名为林斌学生的信息,并分析执行该数据查询所花费的磁盘活动量信息。,维护索引,更新统计信息: 【问题810】在SQL Server Management Studio中通过设置Xk数据库的属性决定是否实现统计的自动更新。 【问题811】使用UPDATE STATISTICS命令。更新Xk数据库中的Student表的PK_Student索引的统计信息。 扫描表: 【问题812】利用DBCC SHOWCONT

10、IG获取Xk数据库中Student表的PK_Student索引碎片信息。,碎片整理,当表或视图上的聚集索引和非聚集索引页级上存在碎片时,可以通过DBCC INDEXDEFRAG对其进行碎片整理。 【问题813】用DBCC INDEXDEFRAG命令对Xk数据库中Student表的PK_Student索引进行碎片整理。,练一练,为Class表建立基于ClassName的惟一、非聚集索引IX_Class。 使用系统存储过程sp_helpindex查看Class表的索引信息。注意看总共有几个索引? 使用系统存储过程sp_rename将索引IX_Class改为IX_ClassName。,单元小结,索引的用途、分类 何时使用索引 索引的创建和管理(重点) 索引的分析与维护,复习与巩固,本单元: 1、思考与练习 2、实训第160页。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号