您好, 访客   登录/注册

数据库技术中SQL查询优化技术探析

来源:用户上传      作者: 王祥瑞

  【摘要】对SQL语句的特性和语句格式进行了介绍,并对影响数据库SQL查询语句效率因素和优化器优化策略进行了分析,从索引的使用、相关子查询、不兼容的数据类型以及临时表等方面,阐述了在使用SQL语句时,如何运用高质量查询语句的方法及手段,借以帮助学生快速掌握SQL语句的使用。
  【关键词】索引;查询;优化
  0 前言
  科技发展的今天,人们越来越依赖于计算机化的业务数据,在许多情况下,没有什么有效的方法进行有用的数据分析。而关系数据库能断开数据访问与基础数据之间的联系,用户使用SQL这样的高级语言,可以动态地访问数据,而无需了解数据是如何存放的。SQL,即结构化查询语言(structured Query Language),是一种支持数据库的简洁而又功能强大的语言。SQL查询语句是数据库开发的一部分,是用户与数据库之间的联系纽带,用户对数据库的操作都是通过SQL语言来实现的。众所周知,数据库设计的重要标准之一,就是要具有快速查询响应速度,查询速度的快慢直接影响着数据库的推广与应用。本文结合数据库理论,介绍查询优化技术在现实系统中的运用手段。
  1 SQL的主要特性
  SQL select语句是一种描述基于某种需要而建立的一组记录和记录存放格式的非过程方法。它具有自动优化查询的功能,可以大大地加快数据的检索。select语句有很多组成部分,但只有两部分是必需的,即from子句和select子句。from子句指定要查询的表,select子句指定要查询的列。同时,SQL是一个面向集合的语言,每次能处理一个记录集。这种面向集合数据处理方法的优点在于为特殊目的创建自定义文件。
  2 SQL的语句优化问题的提出及优化策略
  2.1 SQL优化问题提出
  在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要的问题之一。系统优化中一个很重要的方面就是SQL语句的优化。对于海量数据,劣质SQL语句和优质SQL语句之间的速度差别可以达到上百倍,可见对于一个系统不是简单地能实现其功能就行,而是要写出高质量的SQL语句,提高系统的可用性。
  2.2 SQL查询语句的优化策略
  在数据库的管理与应用中,关系为其结构的基本单位,SQL语言支持关系运算,这些运算都是通过SQL语言的语法和语句来实现的。执行策略是执行查询所需要的一系列步骤。数据库的反应速度经常体现在优化器的优化算法上。此外,优化器的优化策略还与所查询表的内容和其他一些与服务器有关的因素有关。因此对优化器来讲,最为重要的选择就是使用什么索引和采用何种表的连接手段。
  3 SQL的语句的优化方法
  3.1避免全表扫描
  一般地,处理查询或执行select语句时,要执行全表扫描,但有时在执行更新和删除操作时也可能发生全表扫描。增加索引会加快数据访问的速度。建立合适的索引还需要对数据十分了解,通过实践来了解那些索引运行得最有效。
  3.2合理使用索引
  索引查询是数据库中重要的记录查询方法,使用索引的根本目的就是为了提高查询效率,但是索引的创建和使用必须与实际应用系统的查询需求相结合,要恰到好处。因此必须注意索引的使用:(1)null与not null不能用null作索引,任何包含null值的列都将不会被包含在索引中。(2)在经常用作过滤器的字段上创建索引;(3)在大批量记录的录入及删除时应删掉索引。(4)对于有联接的列,即使最后的联接值为静态值,优化器也是不会使用索引的。
  3.3避免相关子查询
  若子查询中引用外层查询的值,就构成相关子查询。执行时就不能象无关子查询那样,先单独处理子查询,再处理外层查询,而需要外层查询和子查询交叉进行。例如一个列的标签同时在主查询和where子句中的查询中出现,那么很可能当主查询中的列值改变之后,子查询必须重新查询一次。查询嵌套层次越多,效率越低,因此应当尽量避免子查询。
  3.4避免使用不兼容的数据类型
  查询的问题之一是在where子句中对有不同类型的列的比较企图。例如float和int;char和varchar是不兼容的。因此要求where子句中表达式的数据类型是兼容的,数据类型的不兼容可能使优化器无法执行一些本来可以进行的优化操作。
  3.5使用临时表加速查询
  对于数据量大而变化相对小的数据库表, 把表的一个子集进行排序并创建临时表,有时能加速查询,而且能避免多重排序操作,提高查询效率,在其他方面还能简化优化器的工作。但是,临时表创建后不会反映主表的变化,如果主表记录有修改,应及时地重建临时表,以保证数据的一致性,在主表中数据频繁修改的情况下,不宜采用这种方法。
  4.结语
  SQL查询语句的优化质量对整个系统效率有相当影响。查询语句的好坏往往会直接影响到实际运行系统的运行效率。优化要抓住关键问题,查询优化的重点环节是使得数据库服务器少从磁盘中读数据以及顺序读页而不是非顺序读页。方法是建立合理的索引策略,编写适宜的SQL语句,构建有效的存储过程,保证整个应用系统稳定、流畅地运行。
  参考文献:
  [1]萨师煊,王珊.数据库系统概论[M].北京:高等教育出版社,2000
  [2]阎玉洁,刘德刚.数据库原理与应用[M].人民邮电出版社,2012
  [3]范剑波.数据库理论与技术实现[J].西安电子科技大学出版社,2012
  [4]王永乐,徐书欣.SQL Server 2008数据库管理与应用[M].北京:清华大学出版社,2011
  [5]王冠.SQL查询语言及应用[M].北京:.北京科学出版社,2009
转载注明来源:https://www.xzbu.com/2/view-4501367.htm