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

  • 相关阅读:
    Rocketmq
    HTTPS 证书显示不安全
    js json 转为url参数
    Telnet 安装
    自己配置环境变量不起作用的问题
    Android笔记-Dalvik VM-1
    Fuzzy Logic/Expert System/Control
    PhD第一学期小结
    linux中的>、>>、2>&1、管道命令
    Hyper-v虚拟机设置静态IP
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11125361.html
Copyright © 2011-2022 走看看