SQL语句优化初探.doc
上传人:sy****28 上传时间:2024-09-13 格式:DOC 页数:3 大小:23KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

SQL语句优化初探.doc

SQL语句优化初探.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

SQL语句优化初探陈凯祥优集学院BU计算机101班224000【摘要】影响数据库性能的一个重要因素就是查询语句的低效率,为了编写出高质量的查询语句,提高数据库系统的性能,在此讨论了查询语句优化的一些技巧,指出了关系数据库查询优化的一般原则,通过对优化方法和技巧的研究,在时间和空间上提高了系统的性能,在一定程度上提高了查询效率。【关键词】索引查询优化SQLSQLStatementsoptimizationqueChenkaixiangYoujicollege,BUcomputer101class224000Abstract:Oneoftheimportantinfluencedatabaseperformancefactoristhelowefficiencyofthequerytowriteouthighqualityquery,improvetheperformanceofthesystem,databaseisdiscussedinthisqueryoptimizationsomeskills,pointsouttherelationaldatabasequeryoptimizationofthegeneralprinciplesoftheoptimizationmethodsandtechniquesthroughthestudy,ontimeandspaceimprovesthesystemperformance,toacertainextent,improvesqueryefficiency.【keywords】SQL;optimizationstrategy;databaseperformance;predicate0引言查询是数据库中最基本、最常用、最复杂的操作在数据库的管理信息系统中,查询操作是所有数据库操作中所占据比重最大的操作。当数据库系统积累到一定程度,若查询时采用单条顺序扫描,那么扫描一遍所有的记录可能就得花上几十分钟,甚至几小时,这样的系统就失去了现实的使用价值。采取什么样的查询策略,使查询时间降为几分钟或者几秒钟,如何更精确、简便的查询到结果,就是这里需要研究的查询优化问题。1优化原理查询优化力图找出给定表达式等价,但执行效率更高的一个表达式,一个查询往往会有许多实现方法,关键是如何找出一个与之等价的且操作时间又少的表达式,查询优化关注的问题是怎样省时、省空间以及效率高。优化的核心问题是尽可能减少查询中各表的参与加工的数据量,从而达到优化时间和空间的目的。2SQL优化的方法模糊匹配的避免LIKE关键字支持通配符匹配,技术上称为正则表达式。但这种匹配特别耗费时间,尽量避免使用模糊匹配。例:SELECT*FROMstudentWHERErxscoreLIKE′4′即使在rxscore字段上建立了索引,在这种情况下也还是采用顺序扫描的方式。可改写为:SELECT*FROMstudentWHERErxscore>′400′这样,在执行查询时就会利用索引来查询,显然会大大提高速度。2.2逻辑表达式的等价变换由于执行引擎对各种谓词的处理方法不同因此把逻辑表达式重写成等价的且效率较高的表达式是提高查询效率的有效方法,同时也是切实可行的。通过查阅大量的文献资料以2.1及大量的实验,分析了RDBMS执行引擎对各种谓词执行效率的不同,总结出以下几种逻辑表达式转换规则:2.2.1将多个OR连接的表达式转化为ANY表达式当条件表达式中同层次上出现由连接词OR连接的表达式,并且OR所连接的表达式的左表达式相同且谓词符号也相同时,那么可以将这些表达式合并为一个右表达式用ANY来描述的表达式。例:rxscore>400ORrxscore>score+50ORrxscore>score×2可改写为:rxscore>ANY(400,score+50,score×2)2.2.2将ANY或ALL转化为简单的比较表达式当谓词的右表达式为ANY或ALL的形式,并且ANY(ALL)包含的各表达式均有固定值,并且可以比较大小,则可根据谓词符号(仅限于比较大小的操作符)将ANY(ALL)重写为简单的比较表达式。例:x>ANY(100,200,300)可改写为:x>100;x>ALL(100,200,300)可改写为:x>3002.2.2将BETWEEN…AND转化为AND连接的表达式可以把由BETWEENexpr1ANDexpr2的形式重写为用AND连接的两个表达式,效率往往有一定的提高。例:rxscoreBETWEEN300AND400可改写为:rxscore>=30ANDrxscore<=402.3子查询合并子查询合并是将某些特定的子查询重