天天看點

SQL優化常用方法41

用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

高效:

UNION ALL

需要注意的是,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%'