- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课程名称:数据库系统概论课时:72 - read
Principle and Application of Database System AnQing Teachers College Department of Computer Information 11 索引 在日常生活中我们会经常遇到索引,例如图书目录、字典索引等。借助索引,我们会很快地找到需要的东西。 例如,当我们要在本书中查找有关“SQL查询”的内容时,应该先通过目录找到“SQL查询”所对应的页码,然后从该页码中找出所要的信息。这种方法比直接翻阅书的内容要快。 如果把数据库表比作一本书,则表的索引就如书的目录一样,通过索引可大大提高查询速度。 索引是数据库检索的常用手段,它实际上就是记录的关键字与其相应地址的对应表。 此外,在SQL Server中,行的唯一性也是通过建立唯一索引来维护的。 索引的作用可归纳为: 1. 加快查询速度; 2. 保证行的唯一性。 方法一:全表扫描 方法二:索引 11.1 索引的分类 1. 聚集索引 聚集索引改变表记录的物理存储顺序,使之与索引列的顺序完全相同。 SQL Server 2000是按B树组织聚集索引的,B树的叶节点存放数据页信息。 一个表只能有一个聚集索引。 2. 非聚集索引 非聚簇索引不改变表记录的存放顺序。SQL Server 2000也是按B树组织非聚集索引的,与聚集索引不同之处在于:非聚集索引B树的叶节点不存放数据页信息,而是存放非聚集索引的键值,并且每个键值项都有指针指向包含该键值的数据行。 唯一索引的概念 唯一索引表示表中每一个索引值只对应唯一的数据记录, 当表中有被设置为UNIQUE约束的字段时,SQL Server会自动建立一个非聚簇的唯一索引。 而当表中有PRIMARY KEY的字段时,SQL Server会在PRIMARY KEY字段建立一个唯一聚簇索引。 11.2 系统表sysindexes 当用户创建数据库时,系统将自动创建系统表sysindexes,用户创建的每个索引均将在系统表sysindexes中登记. 11.3 索引的创建 11.3 索引的创建 11.3 索引的创建 例11 对于JY表,按借书证号+ISBN创建索引。 USE XSBOOK IF EXISTS(SELECT * FROM sysindexes WHERE name=JY_num_ind) DROP INDEX JY.JY_num_ind GO CREATE INDEX JY_num_ind ON JY(借书证号,ISBN) 例1 根据student表的sname列创建唯一非聚集索引。 USE school IF EXISTS(SELECT * FROM sysindexes WHERE name=IX_sname) DROP INDEX student.IX_sname GO CREATE UNIQUE NONCLUSTERED INDEX IX_sname ON student(sname) 例2 创建一视图,并为该视图创建索引。 IF EXISTS(SELECT * FROM sysobjects WHERE name=VIEW1 AND type=v) DROP VIEW VIEW1 GO CREATE VIEW VIEW1 WITH SCHEMABINDING AS SELECT student.sno,sname,course.cno,cname,degree FROM dbo.student,dbo.score,dbo.course WHERE student.sno=score.sno AND score.cno=course.cno GO SET ANSI_NULLS ON SET ANSI_PADDING ON SET ANSI_WARNINGS ON SET ARITHABORT ON SET CONCAT_NULL_YIELDS_NULL ON SET QUOTED_IDENTIFIER ON SET NUMERIC_ROUNDABORT OFF IF EXISTS(SELECT name FROM sysindexes WHERE name=ind1) DROP INDEX VIEW1.ind1 GO CREATE UNIQUE CLUSTERED INDEX ind1 ON dbo.VIEW1(sno,cno) 11.4 索引的删除 1. 通过企业管理器界面删除索引 * * 数据库原理与应用 Principle and Application of Database system 安庆师范学院计算机与信息学院
文档评论(0)