如果查詢上有索引,union all比or快,因為前者會利用索引查找,or會使索引失效;
如果查詢上沒有索引,or比union快,因為前者查詢引擎會一次性完成指令分析。
—————————————————————————————————————————
union all適用場合:1、如果合並多個select結果集,沒有刻意要去除重復行
2、如果union的各個select結果集,不存在交集
Oracle數據庫對union的內部處理過程:先執行union all操作獲取所有的數據合集,再執行去除重復行操作,最后按照默認排序規則進行排序,即按照select后面的字段順序排序的,先按照第一個字段排序,如果第一個字段相同,就安裝第二個字段排序。
union和union all關鍵字需要注意的問題是:必須保證各個select集合的結果有相同個數的列,並且每個列的類型是一樣的,列名不一定要相同,oracle會將第一個結果的列名作為結果集的列名。