打印本文 打印本文 关闭窗口 关闭窗口
ORACLE SQL性能优化系列 (二)
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2229  更新时间:2009/4/22 22:08:20  文章录入:mintao  责任编辑:mintao
AND    JOB = ‘MANAGER’;

 

 

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;

 

 

注意:

上一页  [1] [2] [3]  下一页

打印本文 打印本文 关闭窗口 关闭窗口