摘要:基于关系数据库的标准查询语言SQL被大量的应用到数据库内,利用其查询与检索方面的功能可以使得系统运行更加的准确,但是效率方面却并不理想。数据库性能水平高低通常需要从响应时间与吞吐量方面出发分析。响应时间越短、吞吐量越大,则表示数据库功能越强。本文重点分析的是数据库内进行SQL语句优化的主要方法,提出具体优化原则。
关键词:数据库性能;查询;优化;SQL语句1SQL概述
查询优化是关系数据库内极为重要的组成部分,其能够让各项关系数据库与非过程化的SQL查询语言发展取得非常好的效果。而针对优化来说,其对于系统方面的运行既是机遇,也是挑战。挑战主要就是关系系统为了能够达到用户使用的最低功能而进行查询优化。因为关系表达式的语义级别是很高的,这样就会让整个关系系统能够体现出具体的查询语义,进而让查询优化提升总体效果。
当前,目前所应用的关系数据库管理系统绝大多数都能够通过应用查询语言SQL(Structured Query Language)来实现优化。数据库管理系统在运行之后,可以高效获得各项数据信息,了解维护效果,合理的组织进行存储数据运行。其能够实现数据库的管理与控制,确保数据库运行更加的安全、可靠,同时还能够实现数据共享。在用户根据需要检索相应数据信息,能够利用SQL语言直接将请求发射出去,系统会自动处理该请求,将检索到的数据直接发回给用户。
数据库操作过程中,查询工作量是巨大的,在实际应用中是通过SE-LECT语句在SQL语句中的代价是最大的。如果在操作中应用了优秀查询策略,就能够提高查询的速度和质量,缩短查询时间,其对于查询有着非常高的效果。人们通过在应用SQL查询语句时有错误观点,就是过度的重视正确率,却没有关注不同的SQL查询语句实现方式所存在的不同点,这种不同点在复杂数据库中应用效果更好。
通过合理检索方式可以提升查询效率,但是如果SQL查询语句缺乏合理性,就会导致索引功能难以实现,因此,应该能够写出SQL查询语句,还要提升该语句的性能,以保证检索的效率和质量符合人们使用需要。
2物理查询
select*fromtab1,tab2wheretab1.id=tab2.idandtab1.col1=123and tab2.col1='abc'照这个语句的顺序,先要tab1和tab2进行笛卡尔乘积,再按照tab1.col1=123and tab2.col1='abc'进行筛选。从这个方面出发,即使是初学者也认为该方式的查询效率是极低的,首先应该充分了解逻辑处理与物力处理之间的差异,逻辑处理是执行该查询能够获得怎样的结果,而逻辑查询的各个环节都要从该查询在逻辑执行者的先后顺序,按照该顺序得到相应的查询结果,这与数学中先乘除后加减的运算顺序的原理是相同的。
逻辑查询的目的是获取所需要的结果,而获得该结果需要经过怎样的过程却是不关心的。而物理处理是获得该结果的同时,还要确保其性能合理。下面具体分析物理处理方式。
当一个SQL查询语句进入到数据库搜索引擎之后,其主要的作用就是按照查询计划开展工作,此时会有两种情况发生,其一就是缓存中无法确定具体的查询计划方式,然后系统会根据需要自动生成另外一个计划;其二是该查询计划已经真实的存在与缓存中,然后就是根据该计划开始进行查询作业。
执行计划在编译生成阶段,具体要经过如下几个步骤才能实现:
第一步:分析,这是进行分批处理形成分析树的主要环节,同时还应该根据需要来检测确定语句是否能够达到正确性的标准。
第二步:代数化,该阶段的作用就是进行第一步分析树的输入,生成之后可以形成查询处理器作为输出内容,进而可以实现查询优化的效果。
第三步:查询优化,主要是通过查询优化器组件来完成该步骤。查询阶段需要明确具体的顺序访问表,然后确定具体的索引方法,经过确定各种联接算法来明确具体的查询优化器组件,但是该方式的确定并不是随意进行的,应该达到前提条件才能进行,以保证最终的结果集符合人们的查询需要。从这一方面出发,结果集必须要按照具体的逻辑处理方式来得到相应的各个阶段的结果。优化器应该根据需要实现查询的多个变体确定,最终能够确定成本最低的一个查询计划。
3 SQL子句分析
数据库查询作业的设计过程中,所使用的查询数据的样式也是多样化的,但是选择哪个语句来进行,就显得尤为重要,这是因为其会影响最终的查询效率。因此,在带有where条件时,应该有效的预防在WHERE句子内的字段来开展函数或者表达式的操作,这样就会出现引擎索引无法进行而开展全表的扫描处理,造成查询的工作效率比较差。任何的对列操作的使用都会产生表扫描,其主要包含计算表达式、数据库函数等等方面,在具体的查询操作中,将其移动到等号右边来进行。
4 SQL语句优化原则
“20%的代码用去了80%的时间”,这是开展程序设计中的重要定律和指导思想,数据库的操作实践中也应该重视这一方面。查询优化应该掌握具体的问题,比如数据库的应用程序,主要的目的就是要有效的提升SQL运行的效率。查询优化最为关键的是从服务器内获得相应数据,并不是按照顺序进行全部内容读取。
关系数据库查询优化要按照如下原则来进行:①要尽量的先进行选择运算的操作,然后能够获得相对比较小的中间结果;②把多个选择与投影操作要同时执行,能够避免分次扫描文件而导致效率较低;③投影操作应该根据双目核算的方式来进行;④把笛卡儿积和其后的选择运算合并,能够有效的缩短时间;⑤如果是文件要连接则要合理进行排序或者索引,能够有效对应各个关系;⑥按照小关系运算优化处理的原则,减少中间结果;⑦把表内和查询结果没有关系的属性全部剔除,能够减少中间结果的数量;⑧提取公共表达式,根据要求预先保存,可以防止出现重复计算,缩短时间。
上述原则的应用能够提升查询速度,但是很多条件之下,要经过多次反复试验才能确定最为合理的实施方案。测试是最有效的方式,可以把相同功能的不同SQL语句执行情况进行考察分析,但是数据库内数据量很少,无法通过比较实现,应该查看执行计划,就能够把相同功能的多条SQL语句全部都输入到系统内,然后再按CTRL+L查看所利用的索引表扫描次数。
5结束语
数据库设计的水平,会直接影响管理系统的各项功能,而数据库优化则是进行水平分析的重要指标。因此,在数据库优化中,应该重视各项措施的应用,做好各个方面问题的考虑与分析,但是因为其影响因素比较多,所以在设计中还会存在很多矛盾。这就需要综合使用各种数据库设计方式,以提升数据库的性能,达到最优化的应用效果,使得系统开发效率和质量得以有效的提升。
参考文献:
[1] 张欣.基于SQL标准的关系数据库查询优化技术研究[J].煤炭技术(12):284-286.
[2] 肖辉辉,段艳明.关系数据库SQL语句的设计优化研究[J].软件导刊,2010,09(012):177-179.
[3] 龚成鹏.基于关系型数据库中SQL语句优化规则的研究[D].2019.
作者簡介:
佘雅婷(1991年9月)女,汉,河南省郑州市,当前职务:专员,当前职称:助理工程师,学历:研究生.