- 1、本文档共34页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章索引和视图.ppt.ppt
第6章 索引和视图 6.1 索引 6.1.1 索引的概念 6.1.2 索引的分类 6.1.3 创建和删除索引 6.1.1 索引的概念 索引与书籍中的索引或目录类似 一个索引中包含指定列的所有列值及其相应的存储位置 建立索引的考虑 索引为性能所带来的好处是有代价的,因为索引在数据库中会占用一定的存储空间。 在对数据进行插入、更改和删除操作时,需要对索引进行维护,这需要花费额外的时间。 在设计和创建索引时,应确保对性能的提高程度大于在存储空间和处理资源方面的代价。 应该创建索引的列 在主码(主键)列上DBMS强制建立索引。 在经常连接的列上建立索引,这些列主要是一些外键,可以加快连接的速度。 在经常需要根据范围进行搜索的列上创建索引,,其指定的范围是连续的。 在经常需要排序的列上创建索引,加快排序查询时间。 在经常使用WHERE子句中的列上创建索引,加快条件的判断速度。 不应该创建索引的列 在查询中很少使用或者参考的列不应该创建索引。因为索引反而降低了系统的维护速度和增大了空间需求。 只有很少数据值的列不应该增加索引。例如性别列,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大。增加索引,并不能明显加快检索速度。 对于那些定义为text,image和bit数据类型的列不应该增加索引。因为这些列的数据量要么相当大,要么取值很少。 当修改频率远远大于检索频率时不应该创建索 引。因为当增加索引时虽然提高了检索效率,但是会降低修改效率。 6.1.2 索引的分类 聚集索引(聚簇索引 CLUSTERED)对数据按索引关键字进行物理排序。 一个表只能包含一个聚集索引,但一个索引可以包含多个列。 在定义基本表时,可以通过定义主码约束自动创建一个唯一性(UNIQUE)的聚集索引。(实际上在物理结构上,与主码约束相对应是唯一性的聚集索引。) 也可以使用CREATE INDEX语句创建聚集索引。 聚集索引不适用于频繁更改的列和字节长的列。 非聚集索引(非聚簇索引NONCLUSTERED)不对数据进行物理排序,而是进行逻辑排序。 一个表可以包含多个非聚集索引,一个索引也可以包含多个列。 可以通过CREATE INDEX语句创建非聚集索引。 6.1.3 创建和删除索引 创建索引 CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX 索引名 ON { 表名 | 视图名 } ( 列名 [ ASC | DESC ] [ ,...n ] ) UNIQUE:创建唯一索引。 CLUSTERED:创建聚集索引。 NONCLUSTERED:创建非聚集索引。 如果没有指定索引类型,则默认是创建非聚集索引。 关于唯一索引 可以确保索引列不包含重复的值。 在多列唯一索引的情况下,该索引可以确保索引列中每个值的组合都是唯一的。 聚集索引和非聚集索引都可以是唯一的。只要列中的数据是唯一的,就可以在同一个表上创建一个唯一的聚集索引和多个唯一的非聚集索引。 示例 例1.为Student表的Sno列创建唯一聚集索引。 CREATE UNIQUE CLUSTERED INDEX Sno_ind ON Student (Sno) 例2.为SC表创建Cno列(升序)Grade(降序)Sno (升序)的非聚集复合索引。 CREATE INDEX CGS_ind ON SC ( Cno, Grade DESC, Sno ) 删除索引 DROP INDEX 表名.索引名 例:删除索引CGS_ind DROP INDEX SC.CGS_ind 6.2 视图 6.2.1 基本概念 6.2.2 定义视图 关于视图列名 1. 定义单源表视图 2.定义多源表视图 3.在已有视图上定义新视图 4.定义带表达式的视图 2.删除视图 * * 6.1 索引 6.1.1 索引的概念 6.1.2 索引的分类 6.1.3 创建和删除索引 6.2 视图 6.2.1 视图概念 6.2.2 定义视图 6.2.3 修改和删除视图 6.2.4 视图的作用 索引和视图是建立在基本表基础之上的两个数据库对象 索引作用是为了加快数据的查询效率 索引通过对数据建立方便查询的搜索数据结构来达到加快数据查询效率的目 索引定义属于数据库的内模式定义,用CREATE INDEX语句实现 视图作用是为了满足不同用户对数据的需求 视图是从一张或多张基本表(或视图)中抽取的数据 视图定义属于数据库的外模式定义,用CREATE VIEW语句实现 建立索引的目的:加快查询速度 可以针对表中的任何列建立索引 谁可以建立索引? DBA 或 表的属主(即建立表的人) DBMS一般会自动建立
文档评论(0)