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

  • 相关阅读:
    偏函数 匿名函数 高阶函数 map filter reduce
    函数
    Python的字符串格式化
    集合
    列表 元组 字典
    字符串
    数字
    Python基础-杂项
    Java 和C/C++的“语法”上的差异!
    MySQL基础原创笔记(一)
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11125361.html
Copyright © 2011-2022 走看看