zoukankan      html  css  js  c++  java
  • oracle用UNION-ALL 替换UNION ( 如果有可能的话)

    当SQL语句需要UNION两个查询结果集合时,这两个结果集合会以UNION-ALL的方式被合并, 然后在输出最终结果前进行排序.

    如果用UNION ALL替代UNION, 这样排序就不是必要了. 效率就会因此得到提高.

    举例:

       低效:

        SELECT ACCT_NUM, BALANCE_AMT

            FROM DEBIT_TRANSACTIONS

            WHERE TRAN_DATE = ’31-DEC-95’

            UNION

            SELECT ACCT_NUM, BALANCE_AMT

            FROM DEBIT_TRANSACTIONS

            WHERE TRAN_DATE = ’31-DEC-95’

    高效:

            SELECT ACCT_NUM, BALANCE_AMT

            FROM DEBIT_TRANSACTIONS

            WHERE TRAN_DATE = ’31-DEC-95’

            UNION ALL

            SELECT ACCT_NUM, BALANCE_AMT

            FROM DEBIT_TRANSACTIONS

            WHERE TRAN_DATE = ’31-DEC-95’

     

    需要注意的是,UNION ALL 将重复输出两个结果集合中相同记录. 因此各位还是

    要从业务需求分析使用UNION ALL的可行性.

    UNION 将对结果集合排序,这个操作会使用到SORT_AREA_SIZE这块内存. 对于这

    块内存的优化也是相当重要的. 下面的SQL可以用来查询排序的消耗量

    Select substr(name,1,25)  "Sort Area Name",

       substr(value,1,15)   "Value"

    from v$sysstat

    where name like 'sort%'

  • 相关阅读:
    python day05
    python day04
    python day03
    python day02
    计算机基本了解
    流程控制
    MFC程序中创建文件夹(文件路径)
    svn移动目录并且保存历史日志
    C++单例模式的问题
    PtInRect 的详细范围
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11125361.html
Copyright © 2011-2022 走看看