Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->数据库应用 ->Oracle ->正文

Oracle SQL性能优化系列介绍(下)

来源:赛迪网技术社区  作者:Webmaster 时间:2007-04-17 点击: [收藏] [投稿]

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。

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:Oracle SQL性能优化系列介绍(上)   下一篇:通过OMS来实现Oracle数据备份的方法

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号