如果查询上有索引,union all比or快,因为前者会利用索引查找,or会使索引失效;
如果查询上没有索引,or比union快,因为前者查询引擎会一次性完成指令分析。
—————————————————————————————————————————
union all适用场合:1、如果合并多个select结果集,没有刻意要去除重复行
2、如果union的各个select结果集,不存在交集
Oracle数据库对union的内部处理过程:先执行union all操作获取所有的数据合集,再执行去除重复行操作,最后按照默认排序规则进行排序,即按照select后面的字段顺序排序的,先按照第一个字段排序,如果第一个字段相同,就安装第二个字段排序。
union和union all关键字需要注意的问题是:必须保证各个select集合的结果有相同个数的列,并且每个列的类型是一样的,列名不一定要相同,oracle会将第一个结果的列名作为结果集的列名。