mis中数据库检索的问题研究_第1页
mis中数据库检索的问题研究_第2页
mis中数据库检索的问题研究_第3页
mis中数据库检索的问题研究_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

mis中数据库检索的问题研究

1索引定义1.1sql东南角企业索引是与表或视图相关的磁盘结构。表或视图中包含一系列已构建的元素(这些键完成后完成排列)和映射指定数据存储位置的指针。这些元素存储在结构(b树)中,以便sqlserver快速有效地找到与键值相关的一行。索引还可以强制表中的行具有唯一性,从而确保表数据的数据完整性。1.2索引的类型和结构索引包括聚集索引和非聚集索引,下面分别介绍:1.2.1叶节点内部的索引在SQLServer中,索引是按B树结构进行组织的。索引B树中的每一页称为一个索引节点。B树的顶端节点称为根节点。索引中的底层节点称为叶节点。根节点与叶节点之间的任何索引级别统称为中间级。在聚集索引中,叶节点包含基础表的数据页。根节点和中间级节点包含存有索引行的索引页。每个索引行包含一个键值和一个指针,该指针指向B树上的某一中间级页或叶级索引中的某个数据行。每级索引中的页均被链接在双向链接列表中。图1为MSDN官方的聚集索引结构图。1.2.2非聚集索引键的生成非聚集索引与聚集索引具有相同的B树结构,它们之间的显著差别在于以下两点:1)基础表的数据行不按非聚集键的顺序排序和存储。2)非聚集索引的叶层是由索引页而不是由数据页组成。既可以使用聚集索引来为表或视图定义非聚集索引,也可以根据堆来定义非聚集索引。非聚集索引中的每个索引行都包含非聚集键值和行定位符。此定位符指向聚集索引或堆中包含该键值的数据行。非聚集索引行中的行定位器或是指向行的指针,或是行的聚集索引键,如下所述:1)如果表是堆(意味着该表没有聚集索引),则行定位器是指向行的指针。该指针由文件标识符(ID)、页码和页上的行数生成。整个指针称为行ID(RID)。2)如果表有聚集索引或索引视图上有聚集索引,则行定位器是行的聚集索引键。如果聚集索引不是唯一的索引,SQLServer2005将添加在内部生成的值(称为唯一值)以使所有重复键唯一。此四字节的值对于用户不可见。仅当需要使聚集键唯一以用于非聚集索引中时,才添加该值。SQLServer通过使用存储在非聚集索引的叶行内的聚集索引键搜索聚集索引来检索数据行。图2为MSDN官方的非聚集索引结构图。1.3逻辑排序的创建主要参数说明:UNIQUE:为表或视图创建唯一索引。CLUSTERED:创建索引时,键值的逻辑顺序决定表中对应行的物理顺序。NONCLUSTERED:创建一个指定表的逻辑排序的索引。对于非聚集索引,数据行的物理排序独立于索引排序。column:索引所基于的一列或多列。[ASC|DESC]:确定特定索引列的升序或降序排序方向。默认值为ASC。2索引函数在实际使用中,我们总结了数据库索引的诸多优点和缺点:2.1加速表和表之间的连接1)通过创建唯一性索引可以保证数据库表中每一行数据的唯一性(相当于给表建立了主键);3)可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义;下面的实例说明了使用索引在百万级数据表(1887592条数据)查询中的优点其中SELECT*FROMmatdescWHEREmaterial=@Material语句运行结果2.2索引空间的设置1)创建索引和维护索引要耗费时间,且这种时间随着数据量的增加而增加;2)索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大;3)当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。3索引在使用场景上的合理设计有了前面总结索引的优点和缺点,我们还必须清楚在什么场合下使用索引,以及在使用的过程中,使索引能够带来性能上的提升,而不会出现索引失效情况的发生。3.1创建索引的列索引是建立在数据库表中的某些列的上面,因此,在创建索引的时候,应该仔细考虑在哪些列上可以创建索引,在哪些列上不能创建索引。一般来说,应该在这些列上创建索引:1)在作为主键的列上;2)非主键但在查询频率很高的列上;3)在经常用在连接外表的外键列上;4)在经常需要根据范围进行搜索的列上;5)在经常需要排序的列上创建索引;6)在经常使用在WHERE子句中的列上。同样,有些列是不应该创建索引的。一般来说,不应该创建索引的列具有下列特点:1)很少作为查询条件的列;2)数据值很少的列;3)数据类型为text,image和bit的列。3.2对列索引的失效建立了索引并不意味着这个索引就可以为我所用,而且即使已经运行正常的索引也并不能保证中途没有异常发生,比如下面的情况,或许是我们之前没有想到或遇到的:1)对列使用函数,该列的索引将失效,如:substring(A,1,2)='xx';2)对列进行计算,该列的索引将失效,如:A+10=20;3)对列进行LIKE操作,该列的索引将失效,如:ALIKE'%10%';4)对列使用反向操作,该列的索引将失效,如:A<>2;5)在WHERE中使用OR时,有一个列没有索引的,其它列的索引将失效;6)隐式数据转换,参数类型优先级高于列类型时,该列的索引将失效。4根据读者的需求,设计出合理的数据库索引本文从MSDN对索引的定义及分类出发,系统性的阐述了数据库索引的结构和特点以及使用过程中的注意事项,相信读者对数据库索引已经有了一个较为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论