数据库技术与应用——SQL Server 2008 第2版 教学课件 ppt 作者 张建伟 梁树军 金松河 第10章 索引

上传人:E**** 文档编号:89402957 上传时间:2019-05-24 格式:PPT 页数:26 大小:372KB
返回 下载 相关 举报
数据库技术与应用——SQL Server 2008 第2版  教学课件 ppt 作者  张建伟 梁树军 金松河 第10章 索引_第1页
第1页 / 共26页
数据库技术与应用——SQL Server 2008 第2版  教学课件 ppt 作者  张建伟 梁树军 金松河 第10章 索引_第2页
第2页 / 共26页
数据库技术与应用——SQL Server 2008 第2版  教学课件 ppt 作者  张建伟 梁树军 金松河 第10章 索引_第3页
第3页 / 共26页
数据库技术与应用——SQL Server 2008 第2版  教学课件 ppt 作者  张建伟 梁树军 金松河 第10章 索引_第4页
第4页 / 共26页
数据库技术与应用——SQL Server 2008 第2版  教学课件 ppt 作者  张建伟 梁树军 金松河 第10章 索引_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《数据库技术与应用——SQL Server 2008 第2版 教学课件 ppt 作者 张建伟 梁树军 金松河 第10章 索引》由会员分享,可在线阅读,更多相关《数据库技术与应用——SQL Server 2008 第2版 教学课件 ppt 作者 张建伟 梁树军 金松河 第10章 索引(26页珍藏版)》请在金锄头文库上搜索。

1、第10章 索引,10.1 索引概述,索引是一个单独的、物理的数据库结构,是为了加速对表中的数据行的检索而创建的一种分散存储结构。 索引是针对一个表而建立的,每个索引页面中的行都含有逻辑指针,指向数据库表中的物理位置,以便加速检索物理数据。,10.2 索引类型,根据存储结构的不同将索引分为两大类 聚集索引 非聚集索引 其他的种类: 唯一索引 非唯一索引,10.2 索引类型,聚集索引 是指表中数据行的物理顺序与索引顺序完全相同。因为当为一个表的某列创建聚集索引时,表中的数据就会按该列进行重新排序,然后再存储到磁盘上。 具有唯一性。因为表的数据行只能以一种排序方式存储在磁盘上。,10.2 索引类型,

2、非聚集索引 具有与表中的数据完全分离的结构,包括非聚集索引键值和一个或多个指向包含该值的数据行的行定位器(行的地址)。 与聚集索引的区别: 使用非聚集索引不用对物理数据页中的行进行排序。 可以创建多个非聚集索引;而聚集索引只能有一个。,10.2 索引类型,唯一索引 不允许两行具有相同的索引值。可以是聚集索引,也可以是非聚集索引。 主键索引 当为表创建主键时将自动创建主键索引,主键索引为聚集索引,是唯一索引的特殊类型。,10.3 创建索引,10.3.1 在图形界面下创建索引 1打开Microsoft SQL Server Manager Studio。 2在左侧的对象资源管理器中,依次展开“数据

3、库|CJGL|表”,就可以看到已存在的表。 3选择要创建索引的表,如Course表。单击该表左侧的“+”号,然后选择索引,单击右键,在弹出菜单中选择“新建索引”命令,如图所示。,10.3 创建索引,4在弹出的“新建索引”对话框中输入索引的名称,设置索引的类型,如图所示。,10.3 创建索引,5在对话框中单击“添加”按钮,将弹出“选择列”对话框,选择要添加到索引键的表列,这里我们选择的列是“coursename”,10.3 创建索引,6还可以通过单击选择页中“选项”、“包含性列”、“存储”、“空间”和“筛选器”,对索引的属性进行进一步设置。 7所有属性设置完毕后,单击“确定”按钮,即可创建一个索

4、引。,10.3 创建索引,创建索引 CREATE UNIQUECLUSTER|NONCLUSTERED INDEX 索引名 ON 表|视图(列ASC|DESC,n) 注:默认情况下创建非聚集索引。,10.3 创建索引,【例10.1】创建唯一的、非聚集索引 在Student表的studentName列上创建一个唯一的、非聚集索引。 USE CJGL GO CREATE UNIQUE NONCLUSTERED INDEX IX_Student_StudentName ON dbo.Student(StudentName) GO 【例10.2】创建聚集索引 在Student表的studentID列上

5、创建一个聚集索引。 USE CJGL GO CREATE CLUSTERED INDEX IX_Student_StudentID ON dbo.Student(StudentID) GO,10.3 创建索引,【例10.3】创建简单非聚集组合索引 在Student表的studentName、sex列上创建非聚集组合索 引。 USE CJGL GO CREATE INDEX IX_Student_Name_sex ON dbo.Student(StudentName,sex) GO,10.3 创建索引,【例10.4】使用 IGNORE_DUP_KEY 选项 首先在该选项设置为 ON 时在临时表中

6、插入多行,然后在该选项设置为 OFF 时执行相同操作,以演示 IGNORE_DUP_KEY 选项的影响。单个行被插入 #Test 表,在执行第二个多行 INSERT 语句时将导致出现重复值。表中的行计数会返回插入的行数。 USE CJGL GO CREATE TABLE #Test (C1 int, C2 nchar(50); GO CREATE UNIQUE INDEX AK_Index ON #Test (C1) WITH (IGNORE_DUP_KEY = ON); GO INSERT INTO #Test VALUES (1, zhangsan); INSERT INTO #Test

7、VALUES (1, lisi); GO DROP TABLE #Test; GO,10.3 创建索引,【例10.5】使用 DROP_EXISTING 删除和重新创建索引 使用 DROP_EXISTING 选项在 Student表的 StudentName 列上 删除并重新创建现有索引。 USE CJGL GO CREATE NONCLUSTERED INDEX IX_Student_StudentName ON dbo.Student(StudentName) WITH (DROP_EXISTING = ON) GO,10.3 创建索引,【例10.6】为视图创建索引 本示例将创建一个视图并为

8、该视图创建索引。 USE CJGL GO IF OBJECT_ID(dbo.v_StuInfo) IS NOT NULL DROP VIEW dbo.v_StuInfo; GO CREATE VIEW dbo.v_StuInfo with SCHEMABINDING AS SELECT studentID, studentName,sex,birthday FROM dbo.student GO CREATE UNIQUE CLUSTERED INDEX idx_stuid ON dbo.v_StuInfo(studentID) GO,10.4 修改索引,1禁用索引 禁用索引可防止用户访问该索

9、引,对于聚集索引,还可防止 用户访问础表数据。索引定义保留在元数据中,非聚集索引 的索引统计信息仍保留。对视图禁用非聚集索引或聚集索引 会以物理方式删除索引数据。禁用表的聚集索引可以防止对 数据的访问,数据仍保留在表中,但在删除或重新生成索引 之前,无法对这些数据执行DML操作。,10.4 修改索引,【例10.8】禁用索引 USE CJGL GO ALTER INDEX IDX_Course_name ON Course DISABLE GO 【例10.9】启用索引 USE CJGL GO ALTER INDEX IDX_Course_name ON Course REBUILD GO,10.

10、4 修改索引,2重新组织和重新生成索引 无论何时对基础数据执行插入、更新或删除操作,SQL Server 2008都会自动维护索引。随着时间的推移,这些修改可能会导致索引中的信息分散在数据库中(含有碎片)。碎片非常多的索引可能会降低查询性能,导致应用程序响应缓慢。可以通过重新组织索引或重新生成索引来修复索引碎片。 重新组织索引是通过进行物理重新排序,从而对表或视图的聚集索引和非聚集索引的叶级别进行碎片整理,提高索引扫描的性能。重新生成索引将删除该索引并创建一个新索引。,10.4 修改索引,【例10.10】重新组织表Course的索引IDX_Course_name USE CJGL GO ALT

11、ER INDEX IDX_Course_name ON Course REORGANIZE GO 【例10.11】重新生成表Course中的全部索引 USE CJGL GO ALTER INDEX ALL ON Course REBUILD GO,10.4 修改索引,3重命名索引 重命名索引将用提供的新名称替换当前的索引名称。指定的名称在表或视图中必须是唯一的。 使用sp_rename重命名索引,sp_rename语法如下: sp_rename object_name , new_name ,object_type 【例10.12】重命名索引 EXEC SP_RENAME dbo.Course

12、.IDX_Course_name,IDX_Name,INDEX,10.5 删除索引,当一个索引不再需要时,可以将其从数据库中删除,以回收它当前使用 的磁盘空间。这样数据库中的任何对象都可以使用此回收的空间。 使用DROP INDEX语句可以删除表或试图的索引。在删除索引时,需要考 虑以下事项: 必须先删除 PRIMARY KEY 或 UNIQUE 约束,才能删除约束使用的索引。通过修改索引,实质上可以删除并重新创建 PRIMARY KEY 或 UNIQUE 约束使用的索引,而无需删除并重新创建约束。 删除视图或表时,将自动删除为永久性和临时性视图或表创建的索引。 在删除聚集索引时,表中的所有非

13、聚集索引都会被自动重建。,10.5 删除索引,DROP INDEX语句的语法如下: DROP INDEX index_name ON table|view,n 【例10.13】从Course表中删除IDX_Name索引 USE CJGL GO DROP INDEX IDX_Name ON dbo.Course GO,10.6 索引优化向导,为数据库项目创建正确索引并不简单。需要考虑许多因素: 数据库的数据模型 表中数据的数量和分布 对数据库执行哪些查询 查询发生的频率 数据更新的频率 为了帮助我们设计索引,SQL Server提供了一个称为“数据 库引擎优化顾问”的工具。使用该工具可以优化数据库,提 高查询处理的性能。,本章小结,本章首先介绍了SQL Server2008索引的基本概念,然后 介绍了如何通过图形界面方式和SQL语句方式进行索引的创 建、修改、删除等操作。最后介绍了使用数据库引擎优化顾 问对索引进行优化的方法。,Thank You !,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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

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