关系数据库SQL查询语句的优化

来源 :新校园·理论(上旬刊) | 被引量 : 0次 | 上传用户:lwsun_2008
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:优化查询有助于提高SQL的检索速度,是一种提高应用系统性能的重要方式。对SQL查询的优化方案主要从优化原理、视图、WHERE子句、存储过程等,并结合实例阐明和验证。对优化查询的掌握,可使学生在数据库应用程序设计方面的课程中更能得心应手。
  关键字:优化查询;SQL查询;关系数据库
  
  数据库查询操作是数据库操作的核心操作,对数据的查询效率及处理速度已成为衡量数据库性能的一个重要指标。数据库查询技术也是学生对《数据库原理与应用》这门课程所必须掌握的知识和技能,数据库查询技术的精通也为以后课程的学习(如:C#.NET程序设计)中的数据库应用程序的设计打下良好的基础。
  为了优化数据库的性能,简单、有效的方法就是优化查询。
  1优化原理和实质
  数据查询处理的代价通常取决于对磁盘的访问,因为磁盘比内存的访问速度要慢。对于一个给定的查询,有许多可能的处理策略,复杂查询更是如此[1]。查询优化的实质是在结果正确的前提下,找出与已有表达式等价,但查询效率更高的表达式。
   2在教学中要注重的几种典型的优化方法
   2.1建立视图
  视图可简化用户操作数据的方式,使用户能着重于所感兴趣的特定数据和所负责的特定任务。如果该视图数据规模小于定义的基本表,则基于视图的查询比原查询的速度会快得多。
  例:要查询每门课程成绩最高的学生的学号
  SELECT 学号,课程号,成绩
  FROM 成绩表 A
  WHERE 成绩=(SELECT MAX(成绩)
  FROM 成绩表B
  WHERE A..课程号=B.课程号)
  语句缺点:这属嵌套查询,子查询的结果集将作为外层查询的条件,查询效率不高。
  解决方案:可先建立视图,求得每门课程的最高分,再与成绩表中比较,获取与视图中最高分数据相等的记录,这就减少了内层连接的数据量,从而提高了检索速度。
  用SQL语句优化的步骤为:
  首先,创建视图
  GREATE VIEW V_max_cnoscore AS
  SELECT 课程号,Max(成绩) AS 最高分数
  FROM 成绩表 GROUP BY 课程号
  其次,利用视图检索数据
  SELECT 学号,A.课程号,A.成绩
  FROM 成绩表A,V_max_cnoscore B
  WHERE A.成绩=B.最高分数 AND A.课程号=B.课程号
  2.2查询条件Where子句的优化
  2.2.1合理设置WHERE条件的先后顺序。多数数据库都是按从左到右的顺序处理条件,把能过滤更多数据的条件放在前面,过滤少的放后面,便可提高检索速度。
  例:SELECT * FROM student
  WHERE ssex=’女’ --条件1过滤的数据较少
  AND sdept=’计算机系’ --条件2过滤数据比条件1多
  上面的SQL就不符合上述原则,可改为:
  SELECT * FROM student
  WHERE sdept=’計算机系’
  AND ssex=’女’
  对同一表格进行多个选择运算,选择条件的排序对性能有较大影响,不仅影响索引的选取,而且关系到临时表的大小[2]。因此,要提高查询速度,可将较严格的条件写在前面,较弱的放在后面。
  2.2.2避免使用“< >”或“NOT”操作符。“< >”或“NOT”均属于排斥性操作符,不是包括性操作符,这会使系统在搜索数据时无法使用索引,只能直接搜索表中的数据,例:
  (1)SELECT 学号 FROM 成绩表 WHERE 成绩< >80
  (2)SELECT 学号 FROM 成绩表 WHERE NOT(成绩<>80)
  (3)SELECT 学号 FROM 成绩表 WHERE成绩< 80 OR 成绩>80
  比较以上三条语句,可知第3条可使用索引查询,它的查询速度最快。
  2.2.3恰当运用“OR扩展”技术。该技术是把在Where子句中带有OR的查询转换成包含多个UNION ALL的查询。
  例:查询计算机系县年龄不大于20岁的学生。
  常规的SQL语句:
  SELECT 学号,姓名 FROM 学生表 WHERE 系名=’计算机系’ OR 年龄<=20
  假定表中“系名”和“年龄”两个字段上创建了索引,以上的查询可能不会使查询优化器使用索引,从而查询效率降低,可改进为:
  SELECT 学号,姓名 FROM 学生表 WHERE 系名='计算机系'
  UNION ALL SELECT 学号,姓名 FROM 学生表 WHERE 年龄<=20
  2.2.4合理减少LIKE条件的使用。在SQL查询中,LIKE条件使用的神奇之处在于其与通配符匹配所提供的模糊查询功能。但在字符串的比较中,有时大量字符的逐个比较,也会大大降低查找效率。
  例:图书按26个英文字母分为26类,查找所有属于‘A’类图书的销售金额。
  SELECT 图书类号, SUM (数量*单价) FROM 销售
  WHERE 图书类号LIKE′A%′GROUP BY图书类号
  优化为精确查询:
  SELECT 图书类号,SUM(数量*单价) FROM销售
  WHERE 图书类号>=′A′AND图书类号<′B′
  GROUP BY图书类号
  2.3正确使用子查询“展平”技术子查询“展平”技术就是指将子查询转变为半连接,连接或者反连接,从而将查询优化。
  例:找出成绩大于等于90分的学生的姓名。
  SELECT 姓名 FROM 学生表 WHERE 学号IN
   (SELECT 学号FROM 成绩表WHERE 成绩>=90)
  语句缺点:需要搜索学生表的每一行,来查找所有满足子查询条件的记录。
  解决方案:将学生表作为连接的内表,查询将作为通常的连接来执行。
  优化后的SQL语句:
  SELECT 姓名FROM (SELECT 学号 FROM 成绩表
  WHERE成绩>=90) A,学生表 B WHERE A.学号=B.学号
  2.4善于使用存储过程
  存储过程是SQL语句和可选控制流语句的预编译集合,一个名称存储并作为一个单元处理。善于使用存储过程,将使SQL变得更加灵活和高效。
  例:查询某个学生某门课程的考试成绩,列出学生的姓名、课程名及成绩
  CREATE PROC pro_student_degree
  @stu_name char(12),@course_name char(18) AS
  SELECT sname,cname,degree
  FROM student A INNER JOIN sc B ON A.sno=B.sno
  INNER JOIN course C ON C.cno=B.cno
  WHERE sname=@stu_name AND cname=@course_name
  以上是一个带有两个输入参数的简单存储过程,只需执行一个简单的SQL语句——“EXEC pro_student_degree‘刘娜’,’数据库原理’”就可完成查询。
  编写性能优化的SQL语句是提高数据库系统的重要因素,随着数据库管理系统中数据量的增大,如何提高查询速度与效率也是计算机软件开发的一个时代要求。实现优化查询的方法很多,在使用中,要根据具体情况权衡利弊,使数据库查询性能最优。在学生的教学中要注重培养学生的动手能力,使学生养成编写优化的SQL语句的习惯。
  
  参考文献:
  [1]王振辉,吴广茂.SQL查询语句优化研究[J].计算机应用,2005,(12):208.
  [2]SQL查询优化注意where条件的顺序.http://alinw.blog.hexun.com/33996498_d.html. 2009-06-18.
  [3]李增祥.数据库SQL查询技术的优化策略[J].消费导刊,2009,(05):205.
  [4]赵松涛.SQL SERVER2000应用及实例集锦[M].北京:人民邮电出版社,2002.139.
其他文献
阅读教学是小学语文教学的基本内容,在阅读教学过程中,教师要有目的、有计划地引导学生阅读。学生通过示范朗读、鼓励性言语评价,以激发学生的阅读兴趣;通过创设情境发展品读思维,通过积累丰富语言构建读写平台。教师运用各种方法调动学生阅读的积极性和效果,从而有效提高阅读教学效果。   近年来,许多教师对小学语文教学的关注越来越多,其中对阅读教学的关注尤其多。因为阅读教学是小学语文教学的中心环节,培养阅读能
期刊
《小学生语文课程标准》中有关阅读的规定是:“逐步养成学生探究性阅读和创造性阅读的能力,提倡多角度、有创意地阅读。”“培养学生广泛阅读的兴趣,扩大阅读面,增加阅读量,多读书,好读书,读好书,读整本的书。”可见课外阅读是多么重要。因此,在平时的教学中,教师要注重引导学生广泛阅读课外读物,培养学生良好的阅读习惯,让学生能真正和书籍交上朋友。   一、创设有利条件,让学生沐浴书香   环境育人,良好的
期刊
情感在学生的生活和实践活动中起着重要作用,学生的每种认识活动都是在一定的情感推动下完成的。积极的情感可以激发学生去努力学习,消极的情感将阻碍学生学习任务的有效完成。因此,在数学教学中,取得良好的教学效果,发掘、培养学生的良好情感是必不可少。  一、巧设问题情境,激发学生热爱数学的情感  小学生的数学情感往往是在教学课堂中被问题情景所激发而培养起来的。创设问题情景并非一件容易的事情。问题要问得巧妙,
期刊
立足理性,采用鼓励机制是成为一名优秀教师最重要的条件。只有立足理性,合理看待自己、要求学生,充分运用鼓励调动学生积极性,才能把教书育人的工作做好。在教学工作中,教师首先要摆正自己的位置,教师和学生在地位上是平等的,不能高高在上。好教师应该既做良师,又做益友。   一、建立平等的师生关系   课堂上,教师要用渊博知识、严谨教风、人格魅力感染学生,赢得学生发自内心的敬佩。课下,与学生亲切交谈,这样
期刊
随着新课改的开展,“有效教学”“高效课堂”成为教育界热议的主打词,学者和一线教师把更多的目光投注在了45分钟的课堂上,然而有效的课外学习也是素质教育中不可或缺的部分。那么我们一线的班主任如何来激发学生的课外学习动机呢?   一、理论篇   要激发学生的学习动机,首先必须明确学习动机的概念。教育心理学将学习动机定义为激发个体进行学习活动、维持已引起的学习活动,并致使行为朝向一定的学习目标的一种内
期刊
教师是学校人才的第一资源,其整体素质决定了学校的生存与发展。十一五期间,为解决教师适应新时期基础教育改革发展需求的忧患意识和危机感,激发出教师自我专业发展的内躯力, 强化学校省级标准化建设的基础内涵。我们以“面向全体、着力课改、立足校本、研学结合、多元开放”为方针,创建了新时期教师岗位培训模式,使教师真正发挥出促教兴校的主力军作用。   一、搭建师德培训平台,培养敬业爱生品格   师德是教师的
期刊
作为一名班主任,在素质教育的新形式下,要将培养学生思想道德、文化科学、劳动技能、身体心理素质全面和谐发展作为工作的核心,培养学生成为努力学习、积极向上、具有独立人格的新世纪人才。   一、用“心”沟通,用“爱”撑起学生心中的晴空   “人非草木,孰能无情。”自从学生进入学校,师生交往的方式将给学生带来深层的情感体验。传统的班级管理方式,班主任辛苦劳累,事必躬亲,严加督促。但有时,班主任严厉的要
期刊
一   众所周知,齐白石是我国近现代著名的国画家、篆刻家,曾被文化部授予“人民艺术家”的光荣称号。白石老人擅长画虾,欣赏他的水墨虾,把他所画的虾与真虾作个对比,不难看出,白石老人删除了一切不必要的细节,如虾壳上细碎的斑纹和亮光等,虾须和虾脚也不全画,而在虾头正中他却加一笔浓墨,以使虾头显得较有份量,而且和左右两边用浓墨画的虾眼相呼应,更加强了虾的神气。然而在真虾上却未必有这重色块,比较图中的虾与
期刊
摘 要:本文通过对格里格的第三小提琴奏鸣曲进行分析,研究其创作中的表现手法以及对后世音乐所产生的影响,以求对挪威杰出的音乐家格里格创作中的民族性风格有更深入的了解。   关键词:民族精神;格里格;奏鸣曲    爱德华·格里格(Edvard Grieg,1843-1907)是19世纪下半叶挪威民族乐派的杰出代表,他的作品中始终贯穿着爱国主义情感的基调。由于他能够吸收、融汇来自艺术音乐和民间音乐的各种
期刊
摘 要:通过对西北某省少数民族某地区某中学初一、初二年级各两个班的英语课进行随机随堂录音的转写情况进行分析,研究英语课堂中教师话语的现状,进而为少数民族地区英语教学以及提高课堂教师话语质量发挥绵薄之力。  关键词:话语分析;教师话语;英语课堂    教师话语(teacher talk),是指教师在第二语言或外语学习的课堂上为组织和从事教学所使用的语言。Nunan(1991)指出:“教师话语对课堂教
期刊