第7章 索引与视图PPT讲稿.ppt

上传人:石*** 文档编号:43658389 上传时间:2022-09-18 格式:PPT 页数:50 大小:3.52MB
返回 下载 相关 举报
第7章 索引与视图PPT讲稿.ppt_第1页
第1页 / 共50页
第7章 索引与视图PPT讲稿.ppt_第2页
第2页 / 共50页
点击查看更多>>
资源描述

《第7章 索引与视图PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《第7章 索引与视图PPT讲稿.ppt(50页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第第7 7章章 索引与索引与视图第1页,共50页,编辑于2022年,星期一索引的优点和缺点聚集索引和非聚集索引的特点索引的类型视图的概念、特点和类型使用CREATE VIEW语句创建视图通过视图修改基表中的数据第2页,共50页,编辑于2022年,星期一通过创建和设计良好的索引进行数据查询,可以显著提高数据库查询和应用程序的性能,减少磁盘I/O操作,降低系统资源的消耗。第3页,共50页,编辑于2022年,星期一数据库系统用下列两种方法之一来访问数据:(1)表扫描,就是指系统将指针放在该表的表头数据所在的数据页上,然后按照数据页的排列顺序,逐页地从前向后扫描该表数据所占有的全部数据页,直至扫描完表

2、中的全部记录。在扫描时,如果找到符合查询条件的记录,那么就将这条记录挑选出来。最后,将全部挑选出来符合查询语句条件的记录显示出来。(2)使用索引查找。索引是一种树状结构,其中存储了关键字和指向包含关键字所在记录的数据页的指针。当使用索引查找时系统将沿着索引的树状结构,根据索引中关键字和指针找到符合查询条件的记录。最后将全部查找到的符合查询语句条件的记录显示出来。第4页,共50页,编辑于2022年,星期一索引是一种与表或视图关联的物理结构,能提供一种以一列或多列的值为基础迅速查找表中行的能力,用来加快从表或视图中检索数据行的速度。为什么要创建索引呢?这是因为创建索引可以大大提高系统的性能:(1)

3、通过创建唯一性索引,可以保证每一行数据的唯一性。(2)可以大大加快数据的检索速度,这也是索引的最主要的原因。(3)可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。(4)在使用ORDER BY和GROUP BY子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。(5)通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能。第5页,共50页,编辑于2022年,星期一既然增加索引有如此多的优点,为什么不对表中的每一个列创建一个索引呢?虽然索引有许多优点,但是为表中的每一个列都增加索引是非常不明智的做法。这是因为增加索引也有缺点:(1)创建索引和维护索引要耗费时间

4、。(2)索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间。如果要建立聚集索引,那么需要的空间就会更大。(3)当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。因为上述这些原因,建立索引需要花费一定的时间和存储空间,而且使用INSERT和UPDATE对数据进行插入和更新操作时,维护索引在时间和空间上也需要一定的开销。因此没有必要对表中所有的列建立索引,而应该根据实际情况来创建索引。第6页,共50页,编辑于2022年,星期一在Microsoft SQL Server 2008 R2系统中有两种基本的索引类型:聚集索引和非聚集索引。

5、除此之外,还有唯一性索引、包含性列索引、索引视图、全文索引及XML索引等。第7页,共50页,编辑于2022年,星期一(1)堆文件堆是不含聚集索引的表,表中的数据没有任何的顺序。堆结构中数据按照插入的先后次序存放,堆文件的数据页面不一定在物理上相邻。堆文件执行插入操作很容易,但是效率不高。(2)B+树的总体结构B+树(Balance树,平衡树)是目前广泛采用的动态文件结构.在B+树索引中,索引分级组织成一棵树。最上层的索引节点称为根节点,中间节点按照索引数据量分成不同的层次。最下层的索引节点称为叶节点。第8页,共50页,编辑于2022年,星期一聚集索引是一种数据表的物理顺序与索引顺序相同的索引。

6、建立索引时,系统将对表的物理数据页中的数据按列进行排列,然后再重新存储到磁盘上,即聚集索引与数据是混为一体的。聚集索引的叶级和非叶级构成了一个特殊类型的B+树结构.聚集索引的特点如下:(1)表的数据按照索引的数据顺序排列。(2)每个数据表只能建立一个聚集索引,并且会在第一个建立,常常会在主键所在的列或者最常查询的列上建立聚集索引。(3)索引将占用用户数据库的空间。(4)适合范围查询。第9页,共50页,编辑于2022年,星期一非聚集索引是一种数据表的物理顺序与索引顺序不相同的索引。非聚集索引与聚集索引具有相同的B树结构,但是在非聚集索引中,基础表的数据行不是按照非聚集键的顺序排序和存储,且非聚集

7、索引的叶级是由索引页而不是由数据页组成。非聚集索引既可以定义在表或视图的聚集索引上,也可以定义在表或视图的堆上。第10页,共50页,编辑于2022年,星期一创建一个非聚集索引时,应该注意下列事项:(1)如果没有指定索引类型,那么默认的类型是非聚集索引。(2)索引页的叶级只包含索引的关键字,不包含实际的数据(3)每个表最多可以创建249个非聚集索引。(4)聚集索引应在非聚集索引被创建之前创建。(5)唯一性是由叶级维护的。(6)以下情况发生时,SQL Server会自动重建现有的非聚集索引:删除现有的聚集索引时创建聚集索引时使用DROP_EXISTING选项来改变聚集索引列的定义时第11页,共50

8、页,编辑于2022年,星期一唯一索引是指索引值必须是唯一的,不允许数据表中具有两行相同的索引值。聚集索引和非聚集索引是从索引数据存储的角度来区分的;而唯一索引和非唯一索引是从索引值来区分的,所以唯一索引和非唯一索引既可以是聚集索引,也可以是非聚集索引,只要列中的数据是唯一的,就可以在一张表中创建一个唯一索引和多个非聚集索引。第12页,共50页,编辑于2022年,星期一7.2.1 创建索引 创建索引的方式可以分为直接方法和间接方法。直接创建索引的方法就是使用命令和工具直接创建索引。间接创建索引就是通过创建其他对象而附加创建了索引。主键约束或唯一性约束创建的索引的优先级高于使用CREATE IND

9、EX语句创建的索引。当在表上定义主键或唯一性约束时,如果表中已经有了使用CREATE INDEX语句创建的标准索引时,那么主键约束或唯一性约束创建的索引覆盖以前创建的标准索引。第13页,共50页,编辑于2022年,星期一(1)从“开始”菜单上选择“程序”|Microsoft SQL Server 2008 R2|SQL Server Management Studio命令,使用Windows或SQL Server身份验证建立连接。(2)在“对象资源管理器”窗口中,打开要建立索引的表“业务记录”表,单击前面的“+”,展开选项,右键单击“索引”项,选择“新建索引”命令,打开“新建索引”对话框 第1

10、4页,共50页,编辑于2022年,星期一第15页,共50页,编辑于2022年,星期一(3)在“选择页”窗格中选择“常规”项,输入索引名称“入住时间_index”,选择非聚集索引类型,单击“添加”按钮,打开“选择列”对话框,如图7-5所示。在该窗体中选择“入住时间”字段作为索引列,单击“确定”按钮,返回“新建索引”对话框。(4)在“选项”页可设置索引的填充因子等参数,填充因子指示索引页的填满程度。在“包含性列”页中,设置索引页还可以包含的其他非键列。在“存储”页,可以对指定的文件组或分区方案建立索引。在“空间”页可以设置空间索引的空间属性。在“筛选器”页可以定义筛选索引的筛选表达式。(5)设置完

11、成后,单击“确定”按钮,则该索引创建完成。第16页,共50页,编辑于2022年,星期一CREATE UNIQUE CLUSTERED|NONCLUSTERED INDEX index_name ON table_or_view_name(column ASC|DESC ,.n )INCLUDE(column_name,n)WITH(PAD_INDEX=ON|OFF|FILLFACTOR=fillfactor|SORT_IN_TEMPDB=ON|OFF|IGNORE_DUP_KEY=ON|OFF|STATISTICS_NORECOMPUTE=ON|OFF|DROP_EXISTING=ON|OFF

12、|ONLINE=ON|OFF|ALLOW_ROW_LOCKS=ON|OFF|ALLOW_PAGE_LOCKS=ON|OFF|MAXDOP=max_degree_of_parallelism),n)ON partition_schema_name(column_name)|filegroup_name|default第17页,共50页,编辑于2022年,星期一UNIOUE选项表示创建唯一性的索引,这时在索引列中不能有相同的两个列值存在。CLUSTERED选项表示创建聚集索引。NONCLUSTERED选项表示创建非聚集索引,非聚集索引是CREATE INDEX语句的默认值。第一个ON关键字表示索引

13、所属的表或视图,这里用于指定表或视图的名称和相应的列名称。列名称后面可以使用ASC或DESC关键字,指定升序排列或降序排列,其默认值是ASC。第二个ON关键字用于指定该索引所在的分区方案或文件组名称。INCLUDE子句用于指定将要包含到非聚集索引的页级中的非键列。PAD_INDEX选项用于指定索引的中间页级,也就是说为非叶级索引页指定填充度。这时的填充度由FILLFACTOR选项指定。FILLFACTOR选项用于指定叶级索引页的填充度。SORT_IN_TEMPDB选项为ON时,用于指定创建索引时产生的中间结果,在tempdb数据库中进行排序。该选项为OFF时,在当前数据库中排序。IGNORE_

14、DUP_KEY选项用于指定唯一性索引键冗余数据的系统行为。当为ON时,系统发出警告信息,只有违反唯一性行的数据插入失败。该选项为OFF时,取消整个INSERT语句并且发出错误信息。STATISTICS_NORECOMPUTE选项用于指定是否重新计算分发统计信息。为ON时,不自动计算过期的索引统计信息。为OFF时,启动自动计算功能。DROP_EXISTING选项用于是否可以删除指定的索引并且重建该索引。为ON时,可以删除并且重建已有的索引。为OFF时,不能删除重建。ONLINE选项用于指定索引操作期间基础表和关联索引是否可用于查询。为ON时,不持有表锁,允许用于查询。为OFF时,持有表锁,索引操

15、作期间不能执行查询。ALLOW_ROW_LOCKS选项用于指定是否使用行锁,如果为ON,表示使用行锁。ALLOW_PAGE_LOCKS选项用于指定是否使用页锁,如果为ON,表示使用页锁。MAXDOP选项用于指定索引操作期间覆盖最大并行度的配置选项,主要目的是限制执行并行计划过程中使用的处理器数量。第18页,共50页,编辑于2022年,星期一例7-1 例7-2例7-3例7-4例7-5例7-6 第19页,共50页,编辑于2022年,星期一1.直接使用Microsoft SQL Server Management Studio查看索引(1)在“对象资源管理器”窗口中,打开要查看索引的表“客房信息”表

16、,单击右键,在弹出菜单中,选择“设计”,进入表设计器。(2)在“表设计器”中,打开“索引/键”窗口。如图7-6所示。可以查看表的所有索引,选中某个索引后还可以查询该索引的名称和列字段等属性。第20页,共50页,编辑于2022年,星期一第21页,共50页,编辑于2022年,星期一2.使用系统视图查看索引信息(1)系统视图sys.indexessys.indexs用于显示数据库元数据中存储的索引类型/文件组或分区方案ID和索引选项的当前设置。例7-7 第22页,共50页,编辑于2022年,星期一(2)系统视图sys.index_columnssys.index_columns可以查看索引的列ID、

17、索引内的位置、索引列的排序顺序等。例7-8 第23页,共50页,编辑于2022年,星期一3.使用系统函数查看索引信息(1)系统函数sys.dm_db_index_usage_statssys.dm_db_index_usage_stats用于显示不同类型索引操作的计数以及上次执行每种操作的时间。例7-9 第24页,共50页,编辑于2022年,星期一(2)系统函数sys.dm_db_index_operational_statssys.dm_db_index_operational_stats用于显示数据库中表或索引的每个分区的当前低级I/O、锁定、闩锁和访问方法活动。例7-10 第25页,共5

18、0页,编辑于2022年,星期一【例7-10】查看数据库Hotel中“客房信息”表的所有索引和分区的信息。DECLARE db_id smallintDECLARE object_id intSET db_id=DB_ID(NHotel)SET object_id=OBJECT_ID(NHotel.dbo.客房信息)IF db_id IS NULL BEGIN PRINT NInvalid database ENDELSE IF object_id IS NULL BEGIN PRINT NInvalid object ENDELSE BEGIN SELECT*FROM sys.dm_db_in

19、dex_operational_stats(db_id,object_id,NULL,NULL)ENDGO第26页,共50页,编辑于2022年,星期一1.直接使用Microsoft SQL Server Management Studio修改与维护索引(1)从“开始”菜单上选择“程序”|Microsoft SQL Server 2008 R2|SQL Server Management Studio命令,使用Windows或SQL Server身份验证建立连接。(2)进入对象资源管理器,展开指定的服务器和数据库项,并展开要查看的表,从选项中选择“索引”选项,则会出现表中已存在的索引列表。双击某

20、一索引名称,则会出现索引属性对话框,在“索引属性-常规”标签页上可以修改索引类型、索引键列等。如图7-7所示。(3)在“索引属性-选项”标签页中可以勾选是否重新计算索引统计信息。索引统计信息对维护索引的性能具有指导作用。还可以设置填充因子。(4)在“索引属性-存储”标签页中可以修改索引的文件组和分区属性。(5)在“索引属性-碎片”标签页中。(6)在“索引属性-扩展属性”标签页中主要包含数据库名称、排序规则等。第27页,共50页,编辑于2022年,星期一第28页,共50页,编辑于2022年,星期一2.使用Transact-SQL语句修改与维护索引(1)使用系统存储过程查看索引信息语法格式:EXE

21、C sp_helpindex table_name例7-11 第29页,共50页,编辑于2022年,星期一(2)查看索引属性SQL Server提供的Transact-SQL函数INDEXPROPERTY能够在给定表标识号/索引名称及属性名称的前提下,返回指定查看的索引属性值。其语法如下:NDEXPROPERTY(table_id,index,property)其中:table_id为预为其提供索引属性信息的表的标识号。index是索引的名称,将为该索引返回属性信息。property包含将要返回的索引属性的名称。例7-12 第30页,共50页,编辑于2022年,星期一(2)查看索引属性SQL

22、Server提供的Transact-SQL函数INDEXPROPERTY能够在给定表标识号/索引名称及属性名称的前提下,返回指定查看的索引属性值。其语法如下:NDEXPROPERTY(table_id,index,property)其中:table_id为预为其提供索引属性信息的表的标识号。index是索引的名称,将为该索引返回属性信息。property包含将要返回的索引属性的名称。例7-12 第31页,共50页,编辑于2022年,星期一1.使用系统存储过程给索引更名使用系统存储过程给索引更名的语法格式:sp_rename objname=object_name,newname=new_nam

23、e,objtype=object_type 例7-13 第32页,共50页,编辑于2022年,星期一视图是从一个或者多个表或视图中导出的表,其结构和数据是建立在对表的查询基础上的。和真实的表一样,视图也包括几个被定义的数据列和多个数据行,但从本质上讲,这些数据列和数据行来源于其所引用的表。因此,视图不是真实存在的基础表,而是一个虚拟表,视图中所显示的数据并不以视图结构存储在数据库中,而是存储在视图所引用的表中。第33页,共50页,编辑于2022年,星期一视图是查看数据库表中数据的一种方式。视图提供了存储预定义的查询语句作为数据库中的对象以备以后使用的能力。视图是一种逻辑对象,是一种虚拟表。视图

24、的内容包括如下:(1)基表的列的子集或行的子集,也就是说视图可以是基表的其中一部分。(2)两个或多个基表的联合,也就是说视图是对多个基表进行联合运算检索的SELECT语句。(3)两个或多个基表的连接,也就是说视图是通过对若干个基表的连接生成的。(4)基表的统计汇总,也就是说视图不仅是基表的投影,还可以是经过对基表的各种复杂运算的结果。(5)另外一个视图的子集,也就是说视图既可以基于表,也可以基于另外一个视图。(6)视图和基表的混合,在视图的定义中,视图和基表可以起到同样的作用。第34页,共50页,编辑于2022年,星期一视图结合了基本表和查询两者的特性:用户可以使用视图从一个或多个相关的基表中

25、提取一个数据集(查询特性);用户能运用视图去更新视图中的信息,并且持久地存储到磁盘(表特性)。视图的优点主要表现在以下几点:(1)数据集中显示(2)简化对数据的操作(3)自定义数据(4)合并分割数据(5)安全机制第35页,共50页,编辑于2022年,星期一 当更新视图中的数据时,实际上是对数据表的数据进行更新。事实上,当从视图中插入或者删除数据时,情况也相同。某些视图是不能更新数据的,这些视图有如下特征:(1)有UNION等集合操作符的视图。(2)有GROUP BY子句的视图。(3)有诸如AVG、SUM、或者MAX等函数的视图。(4)使用DISTINCT短语的视图。(5)连接表的视图(其中有一

26、些例外)。第36页,共50页,编辑于2022年,星期一7.4.1 创建视图 在SQL Server中创建视图时需要遵循下列规则:(1)只能在当前数据库中创建视图。(2)如果视图引用的基表或者视图被删除,则该视图不能再被使用,直到创建新的基表或者视图。(3)如果视图中某一列是函数、数学表达式、常量或者来自多个表的列名相同,则必须为列定义名称。(4)不能在视图上创建索引,不能在规则、默认、触发器的定义中引用视图。(5)当通过视图查询数据时,SQL Server要检查以确保语句中涉及的所有数据库对象存在,而且数据修改语句不能违反数据完整性规则。第37页,共50页,编辑于2022年,星期一1.直接使用

27、Microsoft SQL Server Management Studio创建视图(1)从“开始”菜单上选择“程序”|Microsoft SQL Server 2008 R2|SQL Server Management Studio命令,使用Windows或SQL Server身份验证建立连接。(2)在“对象资源管理器”中展开服务器,然后展开“数据库”节点,双击“Hotel”数据库将其展开。选择“视图”项,单击右键,从快捷菜单中选择“新建视图”命令,将在主菜单上添加“查询设计器”菜单,并打开设计器窗格(3)在关系图窗格中单击右键,从快捷菜单中选择“添加表”命令,(右击“视图”节点,从弹出菜单

28、中选择“新建视图”命令,)打开“添加表”对话框(4)选择将要定义的视图的基表(可以是表、视图、函数、同义词或者它们的组合)。(5)假定这里选择“客房信息”表,单击“添加”按钮,把它添加到“视图”选项,选择完成后,单击“关闭”按钮(6)在“视图”页面,完成视图的定义操作。(7)单击“保存”按钮,在弹出对话框中输入视图名称“v_客房位置”,然后单击确定按钮,保存视图 第38页,共50页,编辑于2022年,星期一第39页,共50页,编辑于2022年,星期一2.使用Transact-SQL语句创建视图使用Transact-SQL语句中的CREATE VIEW命令创建视图的语法形式如下:CREATE V

29、IEW view_name (column ,.n )WITH ,.n ASselect_statement WITH CHECK OPTION :=ENCRYPTION|SCHEMABINDING|VIEW_METADATA 第40页,共50页,编辑于2022年,星期一例7-15 例7-16例7-17例7-18 第41页,共50页,编辑于2022年,星期一创建了一个视图后,如果视图定义没有加密,可以获取该视图定义的有关信息。(1)使用系统存储过程语句sp_helptext查看视图、触发器、存储过程在系统表中的定义文本,其语法形式如下:sp_helptext objname=name参数obj

30、name=name为对象的名称,对象必须在当前数据库中。例7-19 第42页,共50页,编辑于2022年,星期一(2)使用系统存储过程sp_depends返回系统表中存储的任何信息,该系统表指出数据库对象所依赖的对象。其语法形式如下:sp_depends object=object参数 object=object为被检查的数据库对象。对象可以是表、视图、存储过程或触发器。例7-20 第43页,共50页,编辑于2022年,星期一(3)使用系统存储过程sp_help来返回有关数据库对象的详细信息,如果不针对某一特定对象,则返回数据库中所有对象信息。其语法形式如下:sp_help object=na

31、me参数object=name是系统对象表中的任意对象的名称,或者是系统类型表中任何用户定义数据类型的名称。例7-21 第44页,共50页,编辑于2022年,星期一1.直接使用Microsoft SQL Server Management Studio修改视图(1)从“开始”菜单上选择“程序”|Microsoft SQL Server 2008|SQL Server Management Studio命令,使用Windows或SQL Server身份验证建立连接。(2)在“对象资源管理器”中展开服务器,然后展开“数据库”节点,双击“Hotel”数据库将其展开。(3)双击“视图”将其展开,右键单

32、击要修改的视图,从弹出的快捷菜单中选择“设计”命令。(4)打开“视图设计器”对话框,可以在其中按照创建视图的方法对视图定义进行各种修改。第45页,共50页,编辑于2022年,星期一2.使用Transact-SQL语句修改视图使用Transact-SQL语句中的ALTER VIEW语句修改对视图的定义。语法形式如下:ALTER VIEW view_name (column,.n)WITH ENCRYPTION ASselect_statement WITH CHECK OPTION 例7-22 第46页,共50页,编辑于2022年,星期一1.直接使用Microsoft SQL Server Ma

33、nagement Studio删除视图可以在企业管理器中删除视图:右击要删除的视图,在弹出的快捷菜单中选择“删除”命令,打开“除去对象”对话框,如图7-16所示,单击“全部除去”按钮则将视图删除。第47页,共50页,编辑于2022年,星期一2.使用Transact-SQL语句修改视图使用Transact-SQL语句DROP VIEW删除视图的语法形式如下:DROP VIEW view_name,n例7-23 第48页,共50页,编辑于2022年,星期一通过视图可以修改数据,但是无论在什么时候修改视图的数据,实际上都是在修改视图的基表中的数据。在满足一定的限制条件下,可以通过视图自由地插入、删除

34、和更新基表中的数据。在修改视图时,要注意下列一些条件:不能同时影响两个或两个以上的基表。可以修改由两个或两个以上的基表得到的视图,但是每一次修改的数据只能影响一个基表。某些列不能修改。这些不能修改的列包括通过计算得到值的列、有内置函数的列或有合计函数的列等。如果影响到表中那些没有缺省值的列,那么可能引起错误。例如,如果使用INSERT语句向视图中插入数据,且该视图的基表有一个没有缺省值的列或有一个不允许空的列且该列没有出现在视图的定义中,那么就会产生一个错误消息。如果在视图定义中指定了WITH CHECK OPTION选项,那么系统验证所修改的数据。WITH CHECK OPTION选项强制对视图的所有修改语句必须满足定义视图使用的SELECT语句的标准。如果这种修改超出了视图定义的范围,那么系统将拒绝这种修改。第49页,共50页,编辑于2022年,星期一1.通过视图插入数据例 7-242.通过视图修改数据例 7-253.通过视图删除数据例 7-26 第50页,共50页,编辑于2022年,星期一

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

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com