UNION和UNION ALL之间的区别是什么?


当前回答

在ORACLE:UNION不支持BLOB(或CLOB)列类型,UNION ALL支持。

其他回答

在ORACLE:UNION不支持BLOB(或CLOB)列类型,UNION ALL支持。

UNION ALL还可以处理更多的数据类型。例如,当尝试联合空间数据类型时。例如:

select a.SHAPE from tableA a
union
select b.SHAPE from tableB b

将投掷

数据类型几何图形不能用作UNION、INTERSECT或EXCEPT运算符的操作数,因为它不可比较。

然而,工会都不会。

我补充一个例子,

UNION,它与不同-->的合并速度较慢,因为它需要比较(在Oracle SQL开发人员中,选择查询,按F10查看成本分析)。

UNION ALL,它在合并时没有明显的-->,速度更快。

SELECT to_date(sysdate, 'yyyy-mm-dd') FROM dual
UNION
SELECT to_date(sysdate, 'yyyy-mm-dd') FROM dual;

and

SELECT to_date(sysdate, 'yyyy-mm-dd') FROM dual
UNION ALL
SELECT to_date(sysdate, 'yyyy-mm-dd') FROM dual;

不确定哪个数据库很重要

UNION和UNION ALL应适用于所有SQL Server。

您应该避免不必要的UNION,它们是巨大的性能泄漏。根据经验,如果您不确定要使用哪个,请使用UNION ALL。

UNION和UNION ALL都连接两个不同SQL的结果。它们处理重复项的方式不同。

UNION对结果集执行DISTINCT,消除所有重复的行。UNION ALL不删除重复项,因此它比UNION更快。

注意:使用此命令时,所有选定的列都需要具有相同的数据类型。

示例:如果我们有两个表,1)员工和2)客户

员工表数据:

客户表数据:

UNION示例(它删除所有重复记录):

UNION ALL示例(它只是连接记录,而不是消除重复,因此比UNION更快):