• ORACLE SQL机能优化系列(六)


      前导发轫:网海拾贝




    9.   整合复杂,无讨论相关的数据库拜候


    若是你有几个复杂的数据库盘问语句,你可以把它们整合到一个盘问中(即便它们之间没有相关)

    比方:

    SELECT NAME

    FROM EMP

    WHERE EMP_NO = 1234;


    SELECT NAME

    FROM DPT

    WHERE DPT_NO = 10 ;


    SELECT NAME

    FROM CAT

    WHERE CAT_TYPE = ‘RD’;


    上面的3个盘问可以被兼并成一个:


    SELECT E.NAME , D.NAME , C.NAME

    FROM CAT C , DPT D , EMP E,DUAL X

    WHERE NVL(‘X’,X.DUMMY) = NVL(‘X’,E.ROWID( ))

    AND NVL(‘X’,X.DUMMY) = NVL(‘X’,D.ROWID( ))

    AND NVL(‘X’,X.DUMMY) = NVL(‘X’,C.ROWID( ))

    AND E.EMP_NO( ) = 1234

    AND D.DEPT_NO( ) = 10

    AND C.CAT_TYPE( ) = ‘RD’;


    (译者按: 固然采纳这种方式,服从获得进步,然则行动的可读性年夜年夜降低,所以读者 照旧要权衡之间的利害)


    10.       删除反复记录


    最高效的删除反复记录方式 ( 因为操作了ROWID)

    DELETE FROM EMP E


    WHERE E.ROWID > (SELECT MIN(X.ROWID)


                       FROM EMP X

                       WHERE X.EMP_NO = E.EMP_NO);

    11.       用TRUNCATE交流DELETE

    当删除表中的记及时,在常常情形下, 回滚段(rollback segments ) 用来寄存可以被恢复的信息. 若是你没有COMMIT事宜,ORACLE会将数据恢复到删除之前的形态(精确地说是

    恢复到实行删除饬令之前的形态)


    而当运用TRUNCATE时, 回滚段不再存听任何可被恢复的信息.当饬令运转后,数据不克不及被恢复.是以很少的资本被调用,实行时辰也会很短.


    (译者按: TRUNCATE只在删除全表实用,TRUNCATE是DDL不是DML)




    版权声明: 原创作品,批准转载,转载时请务必以超链接情势标明文章 原始理由 、作者信息和本声明。不然将究查法令责任。

  • 相关阅读:
    代码重构技术方法
    《算法导论》为什么经典
    BeagleBone Black教训四局:简单LED对照实验
    linux(Ubuntu)安装QQ2013
    ubuntu卸载qq2012
    android弧形进度条,有详细注释的,比较简单
    Android自定义进度条
    AndroidのUI设计研究(一)——自定义ProgressBar
    介绍几个工作开发中封装的好用的android自定义控件
    android自定义viewgroup之我也玩瀑布流
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1976085.html
Copyright © 2020-2023  润新知