oracle union与union all效率与区别分析
Jun 07, 2016 pm 05:45 PMunion 对两个结果集进行并集操作,不包括重复行,同时进行默认规则排序;
union all 对两个结果集进行并集操作,包括重复行,不进行排序
union all 要比union快很多,所以,如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使用union all,如下:
尽量使用union all,因为union需要进行排序,去除重复记录,效率低
union
如果表有多个索引列的时候,用union 替换 where 中的or 效率会提高不少。索引列使用or会造成全表扫描。如果有column 没有使用索引,就得记得or了。
date from store_information
union
select date from internet_sales
注意:union用法中,两个select语句的字段类型匹配,而且字段个数要相同,如上面的例子,在实际的软件开发过程,会遇到更复杂的情况,具体请看下面的例子
select '1' as type,fl_id,fl_code,fl_cname,flda.fl_parentid from flda
where zt_id=2006030002
union
select '2' as type,xm_id,xm_code ,xm_cname ,fl_id from xmda
where exists (select * from (select fl_id from flda where zt_id=2006030002 ) a where xmda.fl_id=a.fl_id)
order by type,fl_parentid ,fl_id
这个句子的意思是将两个sql语句union查询出来,查询的条件就是看xmda表中的fl_id是否和主表flda里的fl_id值相匹配,(也就是存在).
union all 详细实例
union 指令的目的是将两个 sql 语句的结果合并起来,可以查看你要的查询结果.
例如:
sql> select * from a;
id name
---------- ----------
1 aa
2 bb
3 cc
6 dd
7 eesql> select * from b;
id addr
---------- ----------
1 aa
2 bb
3 cc
4 dd
5 eesql> select * from a
2 union all
3 select * from b;id name
---------- ----------
1 aa
2 bb
3 cc
6 dd
7 ee
1 aa
2 bb
3 cc
4 dd
5 ee已选择10行。
sql> select * from a
2 union
3 select * from b;id name
---------- ----------
1 aa
2 bb
3 cc
4 dd
5 ee
6 dd
7 ee
已选择7行。
sql>
注意:union用法中,两个select语句的字段类型匹配,而且字段个数要相同,如上面的例子,在实际的软件开发过程,会遇到更复杂的情况

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Windows 11 でウィンドウの境界線の設定を調整する方法: 色とサイズを変更する

この Apple ID は iTunes Store でまだ使用されていません: 修正

イベント ビューアでのイベント ID 55、50、98、140 のディスク エラーを修正

Windows 11でタイトルバーの色を変更するにはどうすればよいですか?

Windows 11 でタスクバーのサムネイル プレビューを有効または無効にする方法

Windows 11/10修復におけるOOBELANGUAGEエラーの問題
