在Oracle中,UNION和UNION ALL的核心区别在于是否去重、是否排序及性能影响:UNION自动去重并排序但较慢,UNION ALL保留所有行且不排序但更快。 具体差异如下:
- 去重机制
- UNION:自动去除重复行(等效DISTINCT),确保结果唯一。
- UNION ALL:保留所有行,包括重复记录。
- 排序行为
- UNION:默认对结果集排序(可能引发磁盘排序开销)。
- UNION ALL:不排序,结果按查询顺序直接堆叠。
- 性能差异
- UNION:因去重和排序,大数据量时效率低(如百万级数据耗时显著增加)。
- UNION ALL:无额外处理,性能更高(推荐用于日志合并等场景)。
- 使用场景
- 需去重时用UNION(如客户唯一列表)。
- 允许多余数据或求高效时用UNION ALL(如传感器数据合并)