欢迎来到天天文库
浏览记录
ID:51499048
大小:504.00 KB
页数:82页
时间:2020-03-25
《数据库原理与应用04.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第7章索引及其应用17.1有关索引的基础知识在数据库中,索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需数据。数据库中的索引是一个表中所包含的值的列表,其中注明了表中包含各个值的行所在的存储位置27.1.1SQLServer中数据的存储数据存储的基本单位是页,其大小是8KB,每页的开始部分是用于存储系统信息的96字节的页首页的类型页的可用空间量拥有页的对象的对象ID3八种页类型数据索引文本/图像全局/辅助全局分配映射表页的可用空间索引分配映射表大容量更改映射表差异更改映射表4数据页包含除text、ntext和ima
2、ge数据外的所有数据存储在单独的页中57.1.2SQLServer中数据的访问表扫描法使用索引方法6扫描法:当访问未建索引的表内数据时,从表的起始处逐行查找,直到符合查询条件为止效率低7索引法:当使用索引访问建有索引的表内数据时,系统会通过遍历索引树结构来查找行的存储位置效率高87.2创建索引的原因和选择索引列97.2.1创建索引的考虑因素因素之一:加快数据检索索引是针对表而建立的,创建索引后,将为表建立索引页面每个索引页面中的行都含有逻辑指针,以加快检索数据10useNorthwindSELECTCompanyName,C
3、ontactName,AddressFROMCustomersWHERECustomerID='BLONP'如检索Northwind库中Customers表中的客户信息为例,执行命令如下:若在此列上不存在索引,查询要按表中数据行的物理顺序逐行进行,这对于大型表来说,甚至要花费几小时的时间11因素之二:加快表的连接,排序和分组工作排序和分组工作要涉及到数据的检索工作,因此建立了索引后,通过提高数据检索的速度就可以加快表的连接,排序和分组工作12因素之三:增强数据行的唯一性通过在创建索引时定义唯一性,可以增强表中数据行的唯一性,
4、从而保证表中的数据不重复13创建索引要牺牲一定的磁盘空间和系统性能在创建聚集索引期间,系统将暂时使用当前数据库的硬盘空间14创建索引所需的工作空间约为数据库表的1.2倍,在建立索引时,数据被复制以便建立索引。索引建立后,旧的未加索引的表被删除,创建索引时使用的硬盘空间由系统自动收回15存在索引的表,在修改数据时(如插入/删除/更新),要对索引进行更新。修改的数据越多,索引的维护开销也就越大。因此,建立了索引的列在执行修改操作时所花费的时间更长16若一个数据页已满或将要满时,此时再插入数据,该数据页中最后一些数据就必须转移到下
5、一个页面中。这样,就必须修改索引页中的内容,以保证数据顺序的正确性,这需要花费一定的时间177.2.2选择创建索引的数据列因创建索引要耗一定的系统性能,因此要考察对某列创建索引的必要性18定义有主关键字和外部关键字的列需在指定范围中快速或频繁查询的列需要按排序顺序快速或频繁检索的列在集合过程中需要快速或频繁组合到一起的列这些情况要考虑创建索引19在查询中几乎不涉及的列很少有唯一值的列如记录性别的列由text,ntext或image数据类型定义的列只有较少行数的表没必要建索引可不考虑创建索引207.3索引的分类聚集索引Clus
6、teredIndex非聚集索引NonclusteredIndex217.3.1聚集索引聚集索引确定表中数据的物理顺序。当以某字段作为关键字建立聚集索引时,表中数据以该字段作为排序根据。因此,一个表只能建立一个聚集索引,但该索引可以包含多个列(组合索引)22聚集索引由上下两层组成包含有实际的数据页面,其中存放着表中的数据含表中的索引页面,用于数据检索23建立聚集索引的必要性查询命令的回传结果是以该字段为排序条件需要回传局部范围的大量数据表格中某字段内容的重复性比较大24SQLServer是如何在一个已经创建有聚集索引的表上检索
7、数据的?25以Northwind库中Customers表为例,该表在CustomerID上建有聚集索引如执行如下查询:SELECTCompanyName,CityFROMCustomersWHERECustomerID=’PICCO’26SQLServer进行数据检索步骤:系统发现CustomerID上有索引,且适合以上查询,故使用该索引检索开始后,系统从索引的根级出发比较索引的值。若PICCO该索引值,则继续到同一页中的下一个索引值。若PICCO<该索引值,则跳到上一个索引中指定的页27在索引的根页查询到最后一个索引值,
8、则跳到此页所指向的页,如page35在35页继续查找,直到QUEDE。由于PICCO
此文档下载收益归作者所有