资源描述:
《Oracle SQL性能优化方法研究.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Oracle SQL性能优化方法探讨Oracle性能优化方法(SQL篇)11综述22表分区的应用23访问Table的方式34共享SQL语句35选择最有效率的表名顺序56WHERE子句中的连接顺序.67SELECT子句中幸免使用’*’68减少访问数据库的次数69使用DECODE函数来减少处理时刻710整合简单,无关联的数据库访问811删除重复记录812用TRUNCATE替代DELETE913尽量多使用COMMIT914计算记录条数915用Where子句替换HAVING子句916减少对表的查询101
2、7通过内部函数提高SQL效率.1118使用表的不名(Alias)1219用EXISTS替代IN1220用NOTEXISTS替代NOTIN1321识不低效执行的SQL语句1322使用TKPROF工具来查询SQL性能状态1423用EXPLAINPLAN分析SQL语句1424实时批量的处理161综述ORACLE数据库的性能调整是个重要,却又有难度的话题,如何有效地进行调整,需要通过反反复复的过程。在数据库建立时,就能依照顾用的需要合理设计分配表空间以及存储参数、内存使用初始化参数,对以后的数据库性能有
3、专门大的益处,建立好后,又需要在应用中不断进行应用程序的优化和调整,这需要在大量的实践工作中不断地积存经验,从而更好地进行数据库的调优。数据库性能调优的方法l调整内存l调整I/Ol调整资源的争用问题l调整操作系统参数l调整数据库的设计l调整应用程序本文针对应用程序的调整,来讲明对数据库性能如何进行优化。2表分区的应用关于海量数据的表,能够考虑建立分区以提高操作效率。建立分区一般以关键字为分区的标志,也能够以其他字段作为分区的标志,但效率不如关键字高。建立分区的语句在建表时能够进行讲明:creat
4、etableTABLENAME()partitionbyrange(PutOutNo)(partitionPART1valueslessthan(200312319999)partitionPART2valueslessthan(200412319999)TABLENAME2003Data2005Data2004Data。。。。。。partitionPART3valueslessthan(200512319999)。。。。。。建好分区后,数据的逻辑存储方式进行了优化如此,在
5、进行大部分数据查询,数据更新和数据插入时,Oracle自动推断操作应该在哪个分区进行,幸免了整表操作,提高了执行的效率1访问Table的方式ORACLE采纳两种访问表中记录的方式:l全表扫描全表扫描确实是顺序地访问表中每条记录.ORACLE采纳一次读入多个数据块(databaseblock)的方式优化全表扫描.l通过ROWID访问表能够采纳基于ROWID的访问方式情况,提高访问表的效率,,ROWID包含了表中记录的物理位置信息..ORACLE采纳索引(INDEX)实现了数据和存放数据的物理位置(
6、ROWID)之间的联系.通常索引提供了快速访问ROWID的方法,因此那些基于索引列的查询就能够得到性能上的提高.2共享SQL语句为了不重复解析相同的SQL语句,在第一次解析之后,ORACLE将SQL语句存放在内存中.这块位于系统全局区域SGA(systemglobalarea)的共享池(sharedbufferpool)中的内存能够被所有的数据库用户共享.因此,当执行一个SQL语句(有时被称为一个游标)时,假如它和之前的执行过的语句完全相同,ORACLE就能专门快获得差不多被解析的语句以及最好的
7、执行路径.ORACLE的那个功能大大地提高了SQL的执行性能并节约了内存的使用.但是ORACLE只对简单的表提供高速缓冲(cachebuffering),那个功能并不适用于多表连接查询.数据库治理员必须在init.ora中为那个区域设置合适的参数,当那个内存区域越大,就能够保留更多的语句,因此被共享的可能性也就越大了.当向ORACLE提交一个SQL语句,ORACLE会首先在这块内存中查找相同的语句.那个地点需要注明的是,ORACLE对两者采取的是一种严格匹配,要达成共享,SQL语句必须完全相同(
8、包括空格,换行等).共享的语句必须满足三个条件:l字符级的比较:当前被执行的语句和共享池中的语句必须完全相同.例如:SELECT*FROMEMP;和下列每一个都不同SELECT*fromEMP;Select*FromEmp;SELECT*FROMEMP;l两个语句所指的对象必须完全相同:例如:用户对象名如何访问Jacksal_limitprivatesynonymWork_citypublicsynonymPlant_detailpublicsynonymJillsal_limitprivate