本文是一篇数据库论文范文,数据库方面毕业论文格式范文,关于基于ORACLE的SQL语句优化相关硕士学位毕业论文范文。适合数据库及语句及参考文献方面的的大学硕士和本科毕业论文以及数据库相关开题报告范文和职称论文写作参考文献资料下载。
摘 要本文从ORACLE内存角度简单讨论了SQL语句的优化方法.SQL语句由于其简单和容易上手致使大家对它的研究不对,其实无论是DBA还是前台程序员都应该有一些书写高效SQL语句的经验,这对于应用设计和系统日常维护都有很大帮助.
关 键 词SQL语句优化绑定变量物化视图
中图分类号:TP312文献标识码:A
SQL语言由IBM实验室的DonaldChamberlin及其同事在1974年定义,被称为结构化查询语言(StructuredQueryLanguage),现在SQL语言已经形成了标准的应用和开发体系.
1SQL语句的使用
虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括SELECT,INSERT,UPDATE,DELETE以及MERGE在内的标准的SQL命令仍然可以被用来完成几乎所有的数据库操作.
SELECT查询语句用来从一个或多个表中或者其他数据库对象中提取数据.SELECT查询的一般格式是
5select{[distinct|all]columns|*}
1from{tables|views|otherselect}
2whereconditions
3groupbycolumns
4hingconditions
6orderbycolumns;
其中,每行代码前的数字表示了SELECT语句在ORACLE执行顺序.在执行查询语句时是由ORACLE的基于成本的优化器(cost-basedoptimizer,CBO)来负责编译的,因此SELECT查询语句的执行顺序和我们的逻辑思维有所不同.从执行顺序可以直观的看出,减少FROM语句涉及到的数据源数量,可以大幅减少数据访问量,增加SELECT查询语句的执行速度.
2硬解析与软解析
为了不重复解析相同的语句,在每一次执行SQL语句前ORACLE会去检查内存中是不是存在相同的语句.在第一次解析SQL语句之后,ORACLE将SQL语句存放在系统全局内存区域SGA中.因此,当用户执行一个SQL语句时,如果它和之前执行过得语句完全相同,ORACLE会将取回之前的解析信息并重用,这种解析类型被称为软解析.相反的,如果之前没有执行过完全相同的语句,ORACLE会将它解析执行并把解析信息存入SGA中便于以后重用,这种解析类型被称为硬解析.不难看出,当数据块在内存中缓存时的访问速度要大于通过OS获取数据块的访问速度.
3绑定变量的使用
一个硬解析不仅仅耗费大量的系统资源,更重要的是会占据重要的们闩(latch)资源.当一个SQL语句提交后,ORACLE会首先检查一下共享缓冲池(sharedpool)里有没有与之完全相同的语句,如果有的话只须执行软解析即可,否则就得进行硬解析.有以下两条SQL语句:
SQL>select*fromempwheredeptno等于10;
SQL>SELECT*FROMEMPWHEREDEPTNO等于10;
这两条语句返回的结果集是完全相同的,也就是说对于用户来说这两条语句执行结果是相同的.现在来对v$sql表1进行查询.
从返回的结果可以发现,尽管这两条语句的结果是相同的,但是ORACLE认为它们是不同的.这是由于在执行SQL语句时,ORACLE首先将该语句字符的散列值作为它存放在SGA中的主键.当执行其他语句时,ORACLE会将执行语句的散列值与内存中现有的散列值一一比较.在执行字符转换散列值时,大写字母与小写字母产生的散列值是不同的.当使用绑定变量时,即使用户改变了绑定变量的值,ORACLE还是可以共享这个语句.