SQLServer2005实用教程_第8章(索引)-1

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

--网络数据库技术及应用(主讲人:潘大四)--第8章索引的创建和使用•8.1概述•8.2创建索引•8.3查看、修改和删除索引--网络数据库技术及应用(主讲人:潘大四)--索引EmpIDLNmaeFNameGenderPosition10001张三0大当家10002李四1二当家10003王五EmpIDPointer100011000210003LNamePointer李王张聚集索引非聚集索引--网络数据库技术及应用(主讲人:潘大四)--8.1概述•8.1.1索引的概念•数据库中的索引是一个列表,在这个列表中包含了某个表中一列或者若干列值的集合,以及这些值的记录在数据表中的存储位置的物理地址。•--网络数据库技术及应用(主讲人:潘大四)--8.1概述•8.1.2索引的优点•可以大大加快数据检索速度。•通过创建唯一索引,可以保证数据记录的唯一性。•在使用ORDERBY和GROUPBY子句进行检索数据时,可以显著减少查询中分组和排序的时间。•使用索引可以在检索数据的过程中使用优化隐藏器,提高系统性能。•可以加速表与表之间的连接,这一点在实现数据的参照完整性方面有特别的意义。--网络数据库技术及应用(主讲人:潘大四)--•在聚集索引中,表中各行的物理顺序与索引键值的逻辑(索引)顺序相同。•表只能包含一个聚集索引。•聚集索引通常可加快UPDATE和DELETE操作的速度,因为这两个操作需要读取大量的数据。•创建或修改聚集索引可能要花很长时间,因为执行这两个操作时要在磁盘上对表的行进行重组。--网络数据库技术及应用(主讲人:潘大四)--建立索引的一般原则•对经常用来检索的字段建立索引•对数据表中的主键建立索引•对数据表中的外键建立索引•对经常用于连接的字段建立索引•可考虑将聚集索引用于:•包含数量有限的唯一值的列,如state列只包含50个唯一的州代码。•使用下列运算符返回一个范围值的查询:BETWEEN、、=、和=。•返回大结果集的查询。--网络数据库技术及应用(主讲人:潘大四)--不能创建索引的字段•Createtabletbl_sales•(•idintnotnull,•qtyint,•uPricemoney,•amtasqty*uPrice•Qdateasgetdate()•)•可以通过以下语句决定哪些列上可以创建索引•Selectcolumnproperty(object_id(‘tbl_sqles’),’amt’,’iddeterministic’)--网络数据库技术及应用(主讲人:潘大四)--8.1概述8.1.3索引的分类1.聚集索引和非聚集索引2.复合索引&单一索引3.唯一索引本章首页--网络数据库技术及应用(主讲人:潘大四)--聚集索引和非聚集索引--网络数据库技术及应用(主讲人:潘大四)--聚集索引•要建立一个索引,需要大约1.2倍于数据大小的空间。查看一个表的索引在数据库中所占的空间大小,可以使用系统存储过程sp_spaceused,对象名指定为被索引的表名。•要建立一个聚集索引,可以使用关键字CLUSTERED。)记住一个表只能有一个聚集索引。(CREATECLUSTEREDINDEXmycolumn_clust_indexONmytable(mycolumn)•如果表中有重复的记录,当试图用这个语句建立索引时,会出现错误。但是有重复记录的表也可以建立索引;只要使用关键字ALLOW_DUP_ROW--网络数据库技术及应用(主讲人:潘大四)--聚集索引•聚集索引对于那些经常要搜索范围值的列特别有效。使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理相邻。•例如,如果应用程序执行的一个查询经常检索某一日期范围内的记录,则使用聚集索引可以迅速找到包含开始日期的行,然后检索表中所有相邻的行,直到到达结束日期。这样有助于提高此类查询的性能。•同样,如果对从表中检索的数据进行排序时经常要用到某一列,则可以将该表在该列上聚集(物理排序),避免每次查询该列时都进行排序,从而节省成本。--网络数据库技术及应用(主讲人:潘大四)--聚集索引•要对一个表建立唯一索引,可以使用关键字UNIQUE。对聚集索引和非聚集索引都可以使用这个关键字。•CREATEUNIQUECLUSTEREDINDEXmyclumn_cindexONmytable(mycolumn)--网络数据库技术及应用(主讲人:潘大四)--8.2创建索引•8.2.1使用企业管理器创建索引•在企业管理器中,展开指定的服务器和数据库,选择要创建索引的表,从弹出的快捷菜单中依次选择“所有任务|管理索引”选项。--网络数据库技术及应用(主讲人:潘大四)--8.2创建索引•8.2.2使用Transact-SQL语句创建索引Transact-SQL语句中的CREATEINDEX命令可以创建索引。CREATEINDEX命令既可以创建一个可改变表的物理顺序的聚集索引,也可以创建提高查询性能的非聚集索引。--网络数据库技术及应用(主讲人:潘大四)--单一索引与复合索引单一索引:是指索引列为一列的情况,即新建索引的语句只实施在一列上。复合索引:用户可以在多个列上建立索引(1)建立索引idx1oncol1执行select*fromtable1wherecol1=A使用idx1执行select*fromtable1wherecol1=Aandcol2=B也使用idx1(2)删除索引idx1,然后建立idx2on(col1,col2)复合索引执行以上两个查询,也都使用idx2(3)如果两个索引idx1,idx2都存在并不是wherecol1=‘A’用idx1;wherecol1=Aandcol2=B用idx2。其查询优化器使用其中一个以前常用索引。要么都用idx1,要么都用idx2。--网络数据库技术及应用(主讲人:潘大四)--单一索引与复合索引•由此可见,对一张表来说。(1)如果有一个复合索引on(col1,col2),就没有必要同时建立一个单索引oncol1。•(2)如果查询条件需要,可以在已有单索引oncol1的情况下,添加复合索引on(col1,col2),对于效率有一定的提高。--网络数据库技术及应用(主讲人:潘大四)--何时使用复合索引?•在where条件中字段用索引,如果用多字段就用复合索引。•一般在select的字段不要建什么索引(如果是要查询selectcol1,col2,col3frommytable,就不需要上面的索引了)。根据where条件建索引是极其重要的一个原则。•注意:不要过多用索引,否则对表更新的效率有很大的影响,因为在操作表的时候要化大量时间花在创建索引中。--网络数据库技术及应用(主讲人:潘大四)--8.2创建索引•8.2.3使用向导创建视图•1.利用索引向导创建索引•2.利用索引优化向导创建索引本章首页--网络数据库技术及应用(主讲人:潘大四)--索引优化向导•许多应用程序的查询混合都很复杂,单靠询问用户和程序员很难进行评估。SQLServer2000提供索引优化向导,帮助在数据库中设计索引。•对具有复杂访问模式的大型架构,最简单的设计索引的方法是使用索引优化向导。--网络数据库技术及应用(主讲人:潘大四)--索引优化向导•可以为索引优化向导提供一组SQL语句。这组语句可以是为反映系统中典型的语句混合而生成的语句脚本。不过,这组语句通常是SQL事件探查器跟踪记录,记录在系统典型负载期间系统上实际处理的SQL语句。•索引优化向导分析工作负荷和数据库,然后提出可提高工作负荷性能的索引配置建议。可以选择替换现有的索引配置,或者保留现有的索引配置并实现新的索引,以提高执行速度慢的查询子集的性能。--网络数据库技术及应用(主讲人:潘大四)--8.3查看、修改和删除索引•8.3.1使用企业管理器查看、修改和删除索引及更改索引名•1.使用企业管理器查看和修改索引•2.使用企业管理器更改索引名•3.使用企业管理器删除索引--网络数据库技术及应用(主讲人:潘大四)--8.3查看、修改和删除索引•8.3.2使用系统存储过程查看索引信息和更改索引名称•1.使用系统存储过程查看索引信息•2.使用系统存储过程更改索引名称--网络数据库技术及应用(主讲人:潘大四)--8.3查看、修改和删除索引•8.3.3使用Transact-SQL语句删除索引•当不再需要某个索引时,可以使用Transact-SQL语句中的DROPINDEX命令删除索引。DROPINDEX命令可以删除一个或者多个当前数据库中的索引。•Setstatisticstimeon/off本章首页

1 / 23
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功