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%'

  • 相关阅读:
    Length of Last Word
    Remove Duplicates from Sorted Array II
    Sum Root to Leaf Numbers
    Valid Parentheses
    Set Matrix Zeroes
    Symmetric Tree
    Unique Binary Search Trees
    110Balanced Binary Tree
    Match:Blue Jeans(POJ 3080)
    Match:Seek the Name, Seek the Fame(POJ 2752)
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11125361.html
Copyright © 2011-2022 走看看