首页计算机计算机软件数据库原理与应用(SQLServer版) 05-2 第5章 数据表的管理(二).pptx

05-2 第5章 数据表的管理(二).pptx

页数:33页文件大小:93.4 KB来源: 数据库原理与应用(SQLServer版)ppt课件

本课件承接数据表管理的前半部分,重点讲解索引的作用与创建方式,比较全文索引与普通索引的差异,并演示索引视图的建立、索引的查看与删除操作,说明索引对检索性能的影响。

第5章数据表的管理封面,本册从索引开始讲解数据表管理的后续内容
数据库表管理,涵盖数据类型、数据表结构的创建与数据表结构的修改与删除等要点
索引:索引提供指针以指向存储,涵盖索引提供指针以指向存储在表中指定、合理地利用索引与享受索引带来的好处是有代价等要点
查看本课件的文字版(共 33 页,供检索与复制)

第1页:第5章数据表的管理

第5章数据表的管理

第2页:数据库表管理

数据库表管理

  • 数据类型
  • 数据表结构的创建
  • 数据表结构的修改与删除
  • 数据表内容的增加与修改
  • 数据表的索引

第3页:索引:索引提供指针以指向存储

索引:索引提供指针以指向存储

  • 索引提供指针以指向存储在表中指定列的数据值,然后根据指定排序次序排列这些指针。
  • 合理地利用索引,将大大提高数据库的检索速度和数据库的性能。
  • 享受索引带来的好处是有代价的,一是带索引的表在数据库中会占据更多的空间,二是为了维护索引,对数据进行插入、修改、删除等操作的命令所花费的时间会更长些,因此,在设计和创建索引时,要确保对性能的提高程度大于在存储空间和处理资源方面所付出的代价。

第4页:索引是依赖数据表建立

索引是依赖数据表建立

  • 索引是依赖数据表建立的,一个数据表的存储包括两个组成部分,一部分是用来存放数据的数据页,一个是用来存放索引的索引页。通常索引页比数据页的数据量要小得多,当进行数据查询时,SQL Server先去搜索索引页,从中找到所需数据指针,再通过指针从数据页中读取数据。

第5页:SQL Server的七种索引

SQL Server的七种索引

  • SQL Server 2005中的七种索引:
    • 聚集索引
    • 非聚集索引
    • 唯一索引
    • 包含性列索引
    • 索引视图
    • 全文索引
    • XML索引

第6页:聚集索引与非聚集索引

聚集索引与非聚集索引

  • 聚集索引(clustered)对表在物理数据页中的数据按列进行排序,然后再重新存储到磁盘上。表的数据行只能以一种排序方式存储在磁盘上,所以一个表只能有一个聚集索引。
  • 非聚集索引(nonclustered)按照索引的字段排列记录,但是排列的结果并不会存储在表中,而是另外存储。非聚集索引具有完全独立于数据行的结构,使用非聚集索引不用将物理数据页中的数据按列排序。非聚集索引的叶节点存储了组成非聚集索引的关键字值和行定位器。

第7页:唯一索引

唯一索引

  • 唯一索引(unique index)能确保索引无重复,即如果一个唯一索引,则这个字段的值就是唯一的,不同记录中的同一个字段的内容不能相同。无论是聚集索引还是非聚集索引都可以将其设为唯一索引。
  • 唯一索引通常都建立在主键字段上,当数据库中创建了主键之后,数据库会自动将该主键创建成为唯一索引。设置成为唯一索引的字段通常也会将其设置为不能为空(NOT NULL)。即使设置可以为空,在表中,也只能有一条记录的该字段值为NULL,因为NULL值不能重复。

第8页:包含性列索引

包含性列索引

  • 在创建索引时对创建的索引有一定的限制,最多的字段数据不能超过16个,所有字段的长度之和不能超过900个字节。例如假设有一个文章表,文章标题字段类型为varchar(20),文章摘要字段类型为nvarchar(450)。由于nvarchar数据类型每个字符要占用2个字节,所以要创建文章标题和文章摘要两个字段的复合索引,这两列的索引将会超过900字节的大小限制,从而导致创建索引失败。
  • 可以用“包含性列索引”来解决这类问题。所谓包含性列索引是在创建索引时,再将其他非索引字段包含到这个索引中,并起到索引的作用。例如可以为文章题创建一个索引,再将文章摘要包含到这个索引中,这种索引就是包含性列索引。包含性列索引只能是非聚集索引,在计算索引包含的字段数和索引字段的大小是,系统不考虑这些被包含的字段。

第9页:索引视图

索引视图

  • 视图是一个虚拟的数据表,可以像真实的数据表一样使用。视图的本身并不存储数据,数据都存储在视图所引用的数据表中。
  • 如果为视图创建索引,将具体化视图,并将结果集永久存储在视图中,其存储方法与其他带聚集索引的数据表的存储方法完全相同。在创建视图的聚集索引后还可以为视图添加非聚集索引。

第10页:全文索引

全文索引

全文索引
一种特殊类型的基于标记的功能性索引,由SQL Server中的全文引擎服务来创建和维护。
全文索引主要
用于在大量文本文字中搜索字符串,此时使用全文索引的效果比使用T-SQL中like语句效率要高很多。

第11页:全文索引与普通索引的区别

全文索引与普通索引的区别

  • 普通索引是以B-Tree结构来维护,而全文索引一种特殊类型的基于标记的功能性索引,是由Microsoft SQL Server全文引擎服务创建和维护的。
  • 全文索引的创建之前需要先创建全文目录。

第12页:XML索引

XML索引

  • xml实例是作为二进制大型对象(BLOB)方式存储在XML字段中,这些XML实例最大数据量可以达到2GB,如果在没有索引的XML字段里查询数据,将会是个很耗时的操作。而在XML字段上创建的索引就是XML索引。

第13页:系统自动建立的索引

系统自动建立的索引

  • 设置了主键字段,SQL Server就会为这个主键字段创建一个聚集索引;
  • 创建了unique字段,系统则为该字段创建一个唯一索引。

第14页:例如

例如

  • 例如,我们在前面创建SInfo表时已经设置SID为主键字段,现在我们在Microsoft SQL ServerManagement Studio的对象资源管理器中可以展开表StuInfo下面的【索引】,可以看到PK_开头的聚集索引。双击这个索引名,可以在相应在索引属性对话框中看到它是一个聚集索引和唯一索引。

第15页:创建索引

创建索引

  • 在图形界面下
  • 采用T-SQL命令语句

第16页:在图形界面下创建索引

在图形界面下创建索引

  • 启动“Microsoft SQL Server Management Studio”,在“对象资源管理器”窗口中展开【数据库】,展开要建索引的表所在的数据库文件,再展开【表】,再展开【要建索引的表】,在【索引】上右击鼠标,选择【新建索引】。
  • 在新建索引对话框中设置【索引名称】、【索引类型】、【唯一】。
  • 设置【索引键列】,在新建索引对话框中单击【添加】,在弹出的对话中选择要添加到索引键的表列,单击【确定】就可以完成索引的创建。

第17页:采用T-SQL命令语句

采用T-SQL命令语句

  • 建立索引的常用命令格式为:CREATE [UNIQUE] [CLUSTERED] INDEX <索引名>ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…);

第18页:说明:UNIQUE表明此索引

说明:UNIQUE表明此索引

  • UNIQUE表明此索引的每一个索引值只对应唯一的数据记录。
  • CLUSTERED表示要建立的索引是聚集索引。
  • 但创建聚集索引时,需要注意:
    • 每张表只能有一个聚集索引,并且应该最先建立。
    • 创建索引所需要的空间来自用户数据库。
    • 为一个表的创建主键字段和UNIQUE字段约束后所会自动生成相应的索引。
    • 默认设置时不是建立聚集索引,而是建立的非聚集索引。

第19页:建立索引时、建立聚集索引

建立索引时、建立聚集索引

  • 建立索引时,选择参数NONCLUSTERED,则建立的是非聚集索引。
  • 建立聚集索引,可以提高查询效率,但一个基本表最多只允许建立一个聚集索引。

第20页:例1:假定TchInfo表

例1:假定TchInfo表

[例1] 假定TchInfo表、StuInfo表、CourseInfo表、ScoreInfo表均未创建主键(在实验中可以先将这些表中的主键设置移除,然后再分别输入下面的命令),现在为这些表分别建立一个索引,其中TchInfo表按编号(TID)升序建聚集索引,StuInfo表按学号(SID)升序建唯一索引,CourseInfo表课程号(CID)升序建非聚集索引,ScoreInfo表按学号(SID)升序和课程号CID降序建非聚集索引。CREATE CLUSTERED INDEX Clu_TID ON TchInfo(TID) CREATE UNIQUE INDEX Clu_SID ON StuInfo(SID) CREATE INDEX Clu_CID ON CourseInfo(CID) CREATE NONCLUSTERED INDEX Clu_SCID ON ScoreInfo(SID,CID DESC)

第21页:例2:假设有一个“销售”表

例2:假设有一个“销售”表

  • 假设有一个“销售”表,其中包括产品名、产品规格、单价、数量等字段,要求为销售表中的“产品名”和“产品规格”创建一个简单的复合索引。CREATE INDEX ix_products ON销售(产品名,产品规格)

第22页:例3:为表TchInfo的字段TI

例3:为表TchInfo的字段TI

  • 为表TchInfo的字段TID创建一个非聚集索引。CREATE INDEXix_tid ONTchInfo(TID)

第23页:修改索引

修改索引

  • 命令格式见教材P127

第24页:[例4]----禁用索引

[例4]----禁用索引

  • 禁用索引表TchInfo的索引ix_tid。ALTER INDEX ix_tid ON TchInfoDISABLE

第25页:禁用索引可以防止用户

禁用索引可以防止用户

  • 禁用索引可以防止用户访问该索引,禁用聚集索引还可防止用户访问基本数据,索引定义保留在系统目录中。
  • 若要启用被禁用的索引,则可使用ALTERINDEX …REBUILD语句。

第26页:[例5]----重新启用索引

[例5]----重新启用索引

  • 启用例4中被的索引ix_tid.ALTER INDEX ix_tid ON TIDREBUILD

第27页:重新生成索引

重新生成索引

  • P128例5-33更正:ALTER INDEX Clu_SID ONStuInfoREBUILDWITH(PAD_INDEX=ONFILEFACTOR=70)

第28页:填充因子

填充因子

填充因子
指在创建索引页时,每个叶子节点的索引中数据的填满率。
填充因子的默认值
0,但并不是表示不在叶子节点索引页时填充数据,而是表示将叶子节点索引页全部填满,这时的设置与设为100的意思完全相同。

第29页:通常来说、填充因子只有在创建索

通常来说、填充因子只有在创建索

  • 通常来说,如果数据表中的数据很少变动,则将填充因子设得大一些,如果数据表中的数据经常变动,则可以将填充因子设得低一些。
  • 填充因子只有在创建索引时才有用,因为在索引创建完毕之后,每个索引页中的空间都会随着数据表中的数据改变而改变,那么叶子节点索引页中的空间使用情况也不再是固定不变的。

第30页:删除索引

删除索引

  • 命令格式为:DROP INDEX <索引名> ON <表名>(更正P128格式)
  • 删除索引时,系统同时也将把该索引的描述从数据字典中删除。

第31页:[例6]P128教材例5-34更正

[例6]P128教材例5-34更正

  • 删除CourseInfo表上的Clu_Cname索引。DROP INDEXClu_Cname ON CourseInfo

第32页:小结:数据表结构的创建

小结:数据表结构的创建

小结 数据表结构的创建 CREATE TABLE 数据表结构的修改 ALTER TABLE 记录的添加 INSERT INTO-VALUES INSERT INTO-SELECT 记录的修改 UPDATE 记录的删除 DELETE 建立索引 CREATE [UNIQUE] [CLUSTERED] INDEX 修改索引 ALTER INDEX

第33页:作业:完成上机实验三

作业:完成上机实验三

  • 完成上机实验三
顶部目录