数据库管理系统中的查询优化

来源 :中国教育改革与教学研究 | 被引量 : 0次 | 上传用户:a7281423
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:查询在数据库操作中有着广泛的应用,查询语句的优劣直接影响数据库应用系统的性能。随着数据库技术越来越广泛的应用,理解关系数据查询优化的方法,书写合理高效的查询语句,可以使数据库应用系统的性能得到很大程度的提升,进而提高人们的工作效率。本文主要讨论了SQL查询语句的优化,从而指出了查询优化在数据库管理系统中的重要作用及优化技巧。
  关键词:关系数据库; 查询优化; SQL语句
  引言
  查询优化是数据库管理系统设计和实现所采用的一项重要技术,也是影响数据库性能的关键因素。为了优化数据库的性能,除了在数据库的物理设计,关系规范化等方面进行改进外,还有一个简单有效的方法就是通过设计高效合理的查询计划提高查询响应速度。
  数据库管理系统处理查询计划的方式是:在做完查询语句的词法、语法检查之后,将语句提交给数据库管理系统的查询优化器进行代数优化和存取路径的优化,之后由预编译模块处理语句并生成查询规划,然后在合适的时间交由系统处理执行,最后将执行结果返回给用户。SQL语句是对数据库进行操作的唯一途径,应用程序的执行最终要归结为SQL语句的执行,SQL语句的效率对数据库系统的性能起到了决定性作用。因此对查询语句的优化是提高查询效率的根本。
  一、SQL查询语句的优化策略
  影响数据库系统性能的因素很多,包括数据库连接方式、应用系统架构、数据库设计、管理等。其中最本质又至关重要的是数据库管理系统本身的查询优化技术。通过分析关系代数表达式的等价变换准则及查询代价,给定的SQL查询与关系代数表达式对应关系,研究出基于关系代数等价变换规则的SQL查询优化。此外,优化器的优化策略还与所查询表的内容和其他一些与服务器有关的因素有关。因此对优化器来讲,最为重要的选择就是使用什么索引和采用何种表的连接手段。如果用户提交的SQL语句和系统的索引体系是一个不合理的查询计划,仅仅经过系统优化器的优化,根本不可能变得高效。因此用户应合理适当的建立索引体系。
  二、SQL查询的优化方法
  设计高性能的SQL语句的前提是:熟悉你所用的优化器的优化策略并深入理解数据库中的数据,以及透彻的分析用户的需求。在此基础上,才能尝试编写效率最高的SQL语句,优化程序设计。以下所举实例中使用的数据表来自工作实际中的学生信息表(students )、教师信息表(teachers)以及学生成绩表(sc)。
  1.合理使用常规优化查询
  观察下面两组查询语句,它们查询的结果都是一样,但是查询的速度却有着明显的区别。
  第1组:SELECT*FROM teachers WHERE salary/25 =1000
  第2组:SELECT*FROM teachers WHERE salary =1000 * 25
  第2组的语句,在经过了优化后,查询的速度减少了数十倍。因为,数据库优化器在面对第2组的salary=1000* 25时,会转换成salary=25000进行查询,却不能将第1组中的salary/25=1000进行转换。鉴于此,应尽量写用常量跟字段比较检索的表达式,而不要将字段置于表达式当中,否则就没有办法进行优化。
  2.拆分子句优化查询
  使用了IN,OR子句的查询语句,常会使工作表中索引失效。在不会产生大量重复值的前提下,可以考虑把子句拆分开,要求拆分的子句中应该包含索引。在WHERE子句中的“IN”在逻辑上相当于“OR”,所以数据库优化器会将sno in ('01', '02')转化为sno='0l' or sno='02'来执行。这里采用了“OR策略”,就是将满足每个OR子句的行取出,存入临时数据库的工作表中,再建立唯一索引去掉重复行,最后从这个临时表中计算结果。因此,实际过程中并没有利用sno的索引,这样还会因tempdb数据库性能的不同而影响查询时间。
  假设在一个表table中有二十万行,其中no字段上有非群集索引,则执行下面这条语句的速度将会非常慢:
  SELECT*FROM table WHERE no IN ('0',' 1')
  当这个表中的行越来越多,速度也将越来越慢。如果我们将这个OR子句分开,变成:
  SELECT*FROM table WHERE no='0'
  SELECT*FROM table WHERE no='1'
  然后将得到的结果进行UINIO运算,执行的时间只需短短数秒,因为这里的每句都使用了索引,由此提高了查询速度。
  3.使用存储过程优化查询
  存储过程是用SQL语句和数据库编程语言编写的,完成一定的数据访问功能或提供一定的服务过程,预先进行编译和优化后,存储在服务器中,客户程序可以通过远程调用的模式调用它们,因此在执行时不需要将应用程序代码向服务器端传送,可以大大减轻网络负载。同时,由于存储过程已编译为可执行代码,不需要每次执行时进行分析和优化工作,从而减少了预处理的时间,提高了效率。另一方面,使用存储过程还易于维护,且表的结构改变时,不影响客户端的应用程序。
  4.通过查询语句优化提高查询速度
  ⑴避免使用不兼容的数据类型
  查询的问题之一是在where子句中对有不同类型的列的比较企图。例如float和int;char和varchar;binary和varbinary是不兼容的。因此要求where子句中表达式的数据类型是兼容的,数据类型的不兼容可能使优化器无法执行一些本来可以进行的优化操作。
  ⑵避免或简化排序
  应当简化或避免对海量数据表进行重复的排序。当能够利用索引自动以适当的次序产生输出时,优化器就避免了排序的步骤。以下是一些影响因素,索引中不包括一个或几个待排序的列;group by或order by子句中列的次序与索引的次序不一样;排序的列来自不同的表。为了避免不必要的排序,就要正确地增建索引,合理地合并数据库表(尽管有时可能影响表的规范化,但相对于效率的提高是值得的)。如果排序不可避免,那么应当试图简化它,如缩小排序的列的范围等。
  ⑶避免相关子查询
  若子查询中引用外层查询的值,就构成相关子查询。执行时就不能象无关子查询那样,先单独处理子查询,再处理外层查询,而需要外层查询和子查询交叉进行。先用外层查询定位一行数据,这样子查询的引用就有了确定值,然后执行子查询,得到结果后判定外层查询定位的那行数据是否满足条件,再取下一条记录,再执行子查询……直到外层查询涉及的数据全部检查完为止。例如一个列的标签同时在主查询和where子句中的查询中出现,那么很可能当主查询中的列值改变之后,子查询必须重新查询一次。这样的查询嵌套层次越多,效率越低,因此应当尽量避免子查询。
  三、结论
  以上所述只是对SQL查询进行优化的方法,查询优化的重点环节是使得数据库服务器少从磁盘中读数据,同时尽量避免非顺序读页。要想实现SQL的性能优化,还需要深人研究数据库层的资源配置、网络层的流量控制以及操作系统层的总体设计等。为了能更好地实现数据库应用系统优化,平时需要多积累一些SQL语句的优化技巧,充分利用硬件性能和软件方法来解决。
  参考文献
  [1] 刘亚欣.数据库查询优化技术研究及其应用[D].大连理工大学,2006,(12)
  [2] 郭玉栋、左金平.SQL 语言查询优化方案探究[J].晋中学院学报,2006,(6)
  [3] 肖捷、肖正新、袁华强.关系数据库查询优化策略的分析与应用[J].计算机与现代化,2006,(11)
  [4] 宋喜忠.关系数据库查询优化技术探析[J].天中学刊,2008,23(2)
  [5] 柴美娟.基于关系数据库的查询优化[J].浙江工商职业技术学院学报,2005,(10)
其他文献
摘 要: 兴趣是诱发学习积 极性和自觉性的内部动因,基于这一点,笔者进行了初中地理课兴趣教学的尝试性研究,采取的主要方式是: 多种教学方法的综合运用。这种方式,以心理学为依据,在传授知识的过程中,根据不同的教学内容,不断变换教学方法,使学生产 生新鲜感即新颖效应。  关键词: 地理教学; 兴趣; 培养  经过近三个学期的教学尝试,证明这种方式对培养初中学生学习地理课的兴趣,是很有成效的,这种方式主
期刊
词语教学是小学语文的重要组成部分,是阅读教学的主要内容之一。抓好词语教学,让学生学会用多种方 法理解词语,及是小学中年级语文阅读教学的一个重要训练项目,教师在教学中应予以足够的重视。  一、模糊意会法  学生对词语的理解过程具有递时性,要经历“模糊→清晰→模糊”三个步骤,并经过多次反复才能完成。小学语文教材中有很多词语,学生只要意会,基本上知道其意思,能运用就可以了,不一定要求他们理解得很 确切。
期刊
摘 要:一名优秀的教师不仅要有很高的文化素养,扎实的专业知识,强烈的责任心,还要有爱心。教师的工作对象是学生,情感教育在教师德教育教学中占有相当重要的地位。本文就爱心教学进行论述。  关键词:爱心教育,情感教育,理解  随着社会的发展,人们越来越认识到教师的重要作用及其在教学过程中的不可替代性,“教学也是一门艺术”也受到普遍的认可,人们对教师的期望越来越高,对教师提出了越来越高的要求。老师若想把自
期刊
“因为我相信,音乐是令人向往的,音乐是浸化人心的,我发现了他们的好音质,即使会走音,但我看出他们的用心是无可替代的,每一个孩子在这时刻,多么像一个精灵舞动着那轻薄如翼的翅膀,这时,我发现了他,一个音乐的奇迹”。这是法国影片《放牛班的春天》里音乐家马修的一句让我感动心脾的话语,这部被誉为阳光情感故事的影片,将音乐和电影相结合,讲述了一位才华横溢的音乐家,用音乐打动了一群顽皮捣蛋的孩子,并使他们走上热
期刊
摘 要:《荀子·大略》:“人之于文学也,犹玉之于琢磨也”。《中学语文教学大纲》指出:“在教学过程中,进一步培养学生的爱国主义精神,激发学生热爱祖国语文的感情,培养社会主义思想道德品质;努力开拓学生的视野,注重培养创新精神,提高文化品位和审美情趣,发展健康个性,逐步形成健全人格。”在语文教学活动中,蕴藏着大量丰富的感性、理性材料,语文教师在教学中如果能有意识地对此作出具体体验、分析,使学生能够在情感
期刊
摘 要:随着高考冲刺阶段的来临,高三学生的烦躁,焦虑和无助比以往任何时候都要明显。如何帮助学生克服这些心理,使他们顺利地渡过这段非常时期,是每位班主任义不容辞的责任。班主任应该发挥所有能量,所有智慧和所有的爱心,和学生们并肩作战,共同为美好的收获季节而努力。  关键词:高考;班主任  高考前夕,烦燥、焦虑和无助,可以说是相当一部分高三学生的共同心理特征。而惟有班主任,对学生的思想行为具有其他任何人
期刊
摘 要: 班级的学生成长的园地,是学生发展的沃土,是学生个性发展的乐园,是学生走向社会的起点。教育在为减轻就业压力,提高社会生产力提供了有效途径,甚至有蓬勃发展的趋势。一个班级的状况直接影响到学生对学校生活的感受与参与度,影响学生的健康成长和个性发展水平,影响到学校教育的成效和质量。  关键词: 中学教育;班主任;管理  现代教育理论告诉我们,要组织一个成功的班集体,班主任必须具有强烈的事业心、责
期刊
摘 要:未成年人是祖国未来的建设者,是中国特色社会主义事业的接班人。为了贯彻中共中央《关于加强和改进未成年人思想道德建设的若干意见》的精神,歇马小学不断优化学校德育工作,增强德育实效性,联系学生生活的实际,确定德育内容,增强其针对性,逐步形成德育教育系列,以德育人,以环境育人,以活动为载体,着力开展学生进行思想道德教育,促进学生良好行为习惯的养成。  关键词:德育; 工作; 常规; 序列  德育是
期刊
在正确安排训练的前提下,16~18岁这个时期是基础专门性训练阶段的结束,开始进行专门性训练的阶段。  这个年龄段训练任务是:  发展所有专门性身体素质并使其达到高级水平,是运动员的成绩开始明显提高的阶段。这个阶段是在大运动量训练中,要明显地提高训练负荷量的强度值,专门性训练手段占优势。  16—18岁运动员在提高身体机能和形成专门身体形态方面,基本上趋于稳定提升。运动员的高级神经活动明显提高,虽然
期刊
摘 要:构建社会主义和谐社会是党的十六大和十六届三中、四中、五中才全会提出的重大理论命题和科学战略决策。构建和谐的师生关系。  关键词:职校生;素质;爱心;耐心;互动  构建社会主义和谐社会是党的十六大和十六届三中、四中、五中全会提出的重大理论命题和科学战略决策。然而现在也不是提倡构和谐社会,和谐家庭,和谐学校吗?那么构建和谐的师生关系是如何呢?  目前职业学校的学生给社会上的印象就是不爱学习、成
期刊