正确创建合理使用索引 提高数据库查询速度

来源 :东方教育 | 被引量 : 0次 | 上传用户:xxc1990531
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘要】在数据库系统中,一条SQL查询语句的实现可有多种不同的表达方法,而不同的表达方法又会使数据库系统的响应速度大相径庭。深入讨论了在数据库中,怎样正确创建和使用索引,通过合理书写SQL语句来优化查询,充分发挥索引的特性,进一步提高数据查询速度,使系统性能得到更充分有效的改善和提高。
  【关键词】数据库;索引;优化;查询;效率
  0 引言
  在数据库管理系统中,索引是在数据表列上建立的一种数据库对象,是数据库中重要的辅助数据结构。它是可选的,如果不使用索引,所有的数据查询将通过表扫描实现,这就意味着一个表中的所有数据必须都被读入,并且与所请求的数据进行逐行比较,这将产生大量的I/O 操作(除非要从该表中选择绝大多数的行)。对于大型的表,执行表扫描将消耗大量的系统资源。
  索引的引用虽然是由系统决定的,但它与创建索引时编写SQL语句的格式密切相关。一个合理的索引和一个好的SQL查询语句往往可以使系统性能提高几倍乃至数十倍,下面就以Oracle为例来讨论索引的创建、使用和查询方法。
  1 索引键和唯一索引
  1.1 索引键。索引键是用于创建索引的列。如果要通过索引访问一条记录,那就必须在SQL语句的WHERE子句内部包含一个或多个索引键。
  1.2 惟一索引。惟一索引就是要求插入到索引字段的值必须是惟一的,不允许有重复的键值被插入。对于复合键,这意味着所有列的值的组合必须是惟一的。
  2 创建和使用索引的原则
  2.1 选择索引类型应考虑的因素。位图索引适用于那些基数(基数是指某个字段可能拥有的不重复数值的个数,比如sex字段的基数为2,因为性别只能是男或女)比较小的字段。通常如果字段的基数只达到表中记录数的1%,或字段中大部分值都会重复出现100次以上,则对该字段应建立位图索引。此外,某些字段雖然有比较高的基数,也不会出现很多重复值,但经常会被具有复杂查询重要条件的WHERE子句引用,也应为其建立位图索引。而B+树索引则适用于那些具有高基数的字段,特别是那些具有PRIMARY KEY、UNIQUE约束的不能具有重复值的字段。如果字段的特性介于上述两2种情形之间,则(1)考虑是否需要节省存储空间。B+树索引将占用大量的存储空间;而位图索引通常只占用很少的存储空间。(2)对于一些特殊类型的查询语句,位图索引能比B+树索引更有效地提高查询速度。比如,如果在查询的WHERE子句中包含AND、OR等逻辑运算符,使用位图索引可以极大地提高查询的执行速度,因为逻辑运算可以直接在位图索引内部完成。(3)对于另外一些查询语句,B+树索引能比位图索引更有效地提高查询速度。比如,那些经常会使用“<”、“>”等比较运算符进行查询的字段,应当使用B+树索引而不是位图索引,这是由B+树数据结构的搜索特性决定的。(4)在位图索引中可以记录具有NULL值的字段,而在B+树索引中将忽略所有NULL值字段。因此,如果某个字段需要进行与NULL值相关的查询,应当为它创建位图索引。
  2.2 创建索引的原则。(1)当表主要是为了查询时,可以考虑创建索引;否则在数据频繁插入、更新、删除时系统要花费大量的时间开销来维护在索引上的操作,反而影响性能。(2)应该为较大的表创建索引。表越大索引的作用就越显著,效率也越高。(3)对一个表可建立多个索引,但建议一般最多不超过5个。因为太多的索引不仅要占用更多的磁盘空间,而且还会由于较大的索引维护工作而降低插入、更新及删除的速度。(4)创建索引时应选择适当的列:1)经常要查询的列;2)选择性比较好的列;3)经常要进行排序和分组的列;4)经常用于多表连接的列;5)在WHERE子句中频繁使用的列。(5)创建索引应选择适当的表空间。在创建索引时可以把索引存放在任何表空间中,默认情况下Oracle会自动把索引和它所对应的基表存放在同一个空间内。但在创建索引时也可以显式地指定存储表空间,可以把索引存放在与其基表不同硬盘上的不同表空间中,这样比和基表同在一个表空间内更能提高查询速度。因为这样Oracle能够并行读取不同硬盘中的数据,避免产生I/O冲突。
  2.3 不使用索引的准则。在下列情况下,一般不使用索引:(1)数据记录不多的表;(2)如果查询经常返回的行数超过总行数的10%;(3)如果被索引的列太长(如超过50个字节)。
  2.4 复合索引的应用。复合索引允许用户在同一张表上的2个或多个列上建立索引,是具有多列排码的索引。对于经常需要将多个列作为一个整体同时查询的场合,复合索引往往要比创建多个单列索引更加可取。其优点如下:(1)在数据处理过程中比多个单列索引开销要少;(2)对数据修改语句的性能影响较小;(3)能有效地减少表中索引的总数,充分节约磁盘空间;(4)在表中没有单独的任何列能够惟一确定数据行,而是用所有索引列键值的组合来惟一确定数据行时,使用具有多个综合附加列的复合索引可以强化索引的惟一性,因此可以制造更好的机会来加速数据存取。
  3 充分利用索引特性提高查询效率
  对索引的引用是Oracle自动进行的,数据库系统把已建好的索引作为一类资源,在存取操作时自动判定能否使用这些资源。在这个过程中索引是否能被有效地引用,是Oracle系统优化查询的关键。而一个SQL查询语句又可以有很多种执行策略,Oracle优化器将选择出全部的执行方法中所需时间最少,也就是所谓成本最低的一种方法。SQL语句的书写格式将直接关系到系统对索引的引用,因为Oracle所有优化的进行都是基于SQL语句中的WHERE子句。尽管现在数据库产品在查询优化方面已经做得越来越好,但它对查询数据的对象特性并不十分了解,难免要带有一定的盲目性。为了给数据库应用设计者提供更强更有效的控制手段,以便灵活决定哪些查询启动索引,启动哪些索引;怎样才能更充分地发挥索引的作用,以及如何使查询策略得到最佳的优化,Oracle提供了许多约定,用于根据可能的查询结果选择最佳查询方案。
  4 结语
  据统计,约有80%以上的性能问题都是由于使用了不恰当的查询语句造成的。因此,了解SQL语句的执行和优化过程,提高SQL语句的质量对提高系统性能有很大帮助。然而查询语句的好坏往往同实际数据库中表的结构、记录的数量以及字段的取值等多种因素有关,所以无法只用几条简单的普遍适用的规律来总结优化查询语句。但首先应对Oracle最基本的工作过程和规律有一个了解;并采取适当的查询策略,充分利用索引特性,为查询提供一个最佳的执行方案,使系统性能得到有效的改善和提高。
  参考文献:
  [1]顾 诚.Oracle 数据库系统应用开发[M].北京:电子工业出版社,1998.
  [2]David Lockman.Oracle8数据库开发[M].北京:电子工业出版社,1999.
  [3]林存德.Oracle 8i for NT DBA培训手册[M].北京:北京大学出版社,2001.
  [4]Steve Lemme John R.Colby.Oracle 数据库的实施和管理[M].北京:机械工业出版社,2001.
  [5]Edward Whalen Mitchell Schroeter.Oracle 性能调整与优化[M].北京:人民邮电出版社,2002.
其他文献
【摘要】:本文《测量不确定度评定与表示》方法.论述医用超声诊断仪超声源输出声强误差来源,分析方法及结果.  【关键词】:医用超声诊断仪 医用超声源 不确定度评定 医用超声诊断仪 输出声强 超声源 声强测量  前言:本文对用超声功率计检定医用超声诊断仪超声源输出声强测量结果的不确定度进行了分析、评定和计算。  一、测量结果;不确定度评定1 概述1.1 测量依据:JJG 639—98(医用超声诊断仪超
摘要:本文针对科技档案管理工作和对科技档案的形成、积累、整理与归档,科技档案利用和保密提出自己的一些工作思路。  关键词:科技档案;管理;形成;积累;利用;保密  自建院二十六年以来共承担交通部、省科技厅和交通厅的科研项目40余项,上级部门共投入约5000万科研经费,攻破了许多公路建设和养护方面的重大疑难问题,10余项科研成果分别获省科技进步一、二、三等奖。在这延续不断开发公路建设和养护的二十六年
摘要:随着我国经济的不断发展,社会对知识型人才的需求,早已转变为对高素质人才的大量需求。高职院校作为我国高素质人才的主要输出地,每年都为社会主义建设提供了大量的人才资源。而音乐教育作为培养高职院校高素质人才的重要载体,起着提高学生审美情趣,优化学生道德素质的重要作用。同时,也为培养学生健全的人格魅力,健康的情感发展,提供了最为坚实的心理基础。本文根据笔者从事音乐教育的多年实践经验,粗浅的阐述了音乐
摘要:学校德育工作对于培养学生健康的心理素质,文明的行为习惯,科学的世界观、人生观、价值观,崇高的理想,以及正确的政治方向起到了至关重要的作用,特别是在边境少数民族地区,德育教育更是重中之重。  关键词:少数民族德育培养     一、少数民族地区德育教育的重要性:   初中阶段的中学生,正好处于青春期,他们的行为习惯往往受制于他们内心的各种矛盾的情感,这些情感需要我们合理、正确的引导,作为德育工作
摘要:现在我国的造价控制管理还是静态滞后的,不利于动态的控制投资,这就要求造价管理人员规范、系统地做好造价资料的积累,对项目从立项、可行性研究、项目设计、施工直至竣工验收进行全过程跟踪,使项目造价控制贯穿于项目建设全过程,为项目决策提供科学的依据,提高企业竞争能力。  关键字:工程造价、决策、设计、施工、竣工、审核  一、工程造价控制的必要性  工程造价是指进行一项工程建设所需的全部费用,建设工程
[摘要]:本文从心理学的观点出发,通过火灾事故中环境对人的影响,对火灾中人的心理行为进行了分析,总结了个体和群集在火灾中的异常心理行为特点,有助于加强对消防安全培训的认识;同时也为建筑物性能化设计、建立疏散模型提供重要的理论基础。  [关键词]:建筑火灾;人的行为;安全疏散    1 引言  近年来火灾发生的频率加大,造成的损失也呈逐年上升趋势,不但造成了财产的重大损失,而且造成了人员的群死群伤。
摘要:浅析了煤场数字化管理系统在火力发电厂的应用,针对江西丰城发电厂煤场数字化管理要求开发了数字化煤场管理系统,实现了煤场管理的数字化、规范化和网络化。介绍了该系统的结构、各模块功能,并指出该系统需要进一步完善、扩展的内容。关键词:数字化煤场管理,信息系统应用0前言随着电力行业改革的进一步深化,发电市场引进竞争机制,在公平竞争、自愿互利条件下,实现“厂网分开,竞价上网”。如何降低发电成本,提高发电
摘要:摘要介绍工会组织在施工类企业中发挥的作用,同时分析如何更好的运用工会的职能推动企业发展及如何更好的组织工会活动。  关键词:工会、施工企业,处理关系    工会是在党的领导下的职工自愿结合的工人阶级的群众组织,是各级党组织联系职工群众的桥梁和纽带,是职工合法权益的代表者和维护者。基层工会工作是党的群众工作的重要组成部分,是在上级工会和同级党组织双重领导下,以同级党组织领导为主,依据《工会法》
【摘要】数据库技术中数据集中管理,任务分散处理的方法符合科学管理的理念。教务管理系统改造了传统的教学管理模式,逐渐推进了高职院教学管理的现代化;实践中发现,教学管理工作与系统的对接中存在的问题影响了预期的管理目标。因此,如何解决好这类问题是当前各类职业院校在管理信息化建设中要解决的重要课题。  【关键词】教学管理系统;教学管理;运行流程改造  1.教学网络管理系统管理的主要应用  教学管理系统以教
【摘要】抓好幼儿园安全管理工作是促进幼儿园健康发展的根本保证。以幼儿园安全管理工作为研究对象,探索研究幼儿园安全管理工作的措施和要点:加强安全教育,提高安全管理意识,完善各项安全管理制度,做好家园配合,研究完善幼儿园安全管理工作新举措。  【关键词】幼儿园;安全;管理  安全是人类最基本最重要的需求,安全意味着生命。特别对于幼儿来说,由于身心发展不成熟,更容易受到意外的伤害,幼儿园必须把保护幼儿的