OracleSQL性能优化系列介绍(下)

文章作者 100test 发表时间 2007:03:14 13:59:40
来源 100Test.Com百考试题网


6. SELECT子句中避免使用 ‘ * ‘

当你想在SELECT子句中列出所有的COLUMN时,使用动态SQL列引用 ‘* 是一个方便的方法.不幸的是,这是一个非常低效的方法. 实际上,ORACLE在解析的过程中, 会将* 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间。

7. 减少访问数据库的次数

当执行每条SQL语句时, ORACLE在内部执行了许多工作: 解析SQL语句, 估算索引的利用率, 绑定变量 , 读数据块等等. 由此可见, 减少访问数据库的次数 , 就能实际上减少ORACLE的工作量。

例如, 以下有三种方法可以检索出雇员号等于0342或0291的职员。

方法1 (最低效)

SELECT EMP_NAME , SALARY , GRADE 



FROM EMP 



WHERE EMP_NO = 342. 



SELECT EMP_NAME , SALARY , GRADE 



FROM EMP 



WHERE EMP_NO = 291.
  

方法2 (次低效)

DECLARE 



CURSOR C1 (E_NO NUMBER) IS 



SELECT EMP_NAME,SALARY,GRADE 



FROM EMP 



WHERE EMP_NO = E_NO. 



BEGIN 



OPEN C1(342). 



FETCH C1 INTO …,..,.. . 



….. 



OPEN C1(291). 



FETCH C1 INTO …,..,.. . 



CLOSE C1. 



END.
  

方法3 (高效)

SELECT A.EMP_NAME , A.SALARY , A.GRADE, 



B.EMP_NAME , B.SALARY , B.GRADE 



FROM EMP A,EMP B 



WHERE A.EMP_NO = 342 



AND B.EMP_NO = 291.
 

注意: 在SQL*Plus , SQL*Forms和Pro*C中重新设置ARRAYSIZE参数, 可以增加每次数据库访问的检索数据量 ,建议值为200。



相关文章


通过OMS来实现Oracle数据备份的方法
如何保持Oracle数据库的优良性能
Oracle9i数据库中实体化视图简介
在安装10g的时候命令提示符消失?
OracleSQL性能优化系列介绍(下)
高手的Oracle大批量删除数据的方法
Oracle数据库最优化参数缩短反应时间
怎样自动将数据导入Oracle数据库
Oracle数据库中分区表的操作方法详解
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛