"全联盟"有什么用?

Jee*_*att 4 sql

我不是要求他们之间的区别,我的问题是当我们需要使用"全联盟"时?

And*_*ber 17

当你确实需要行的多个"副本"时,你会使用UNION ALL,否则在使用UNION时会被删除.它在查询结束时也可以更快,因为数据库引擎不需要确定结果集之间的重复内容.

  • 提及性能的+1 - 这几乎是关键的,需要了解UNION对UNION ALL对更大的表的影响,其中UNION对于大型结果集将执行比UNION ALL慢几个数量级(因为在大多数情况下删除重复项意味着构建临时索引;对于较小的结果集,这不会那么昂贵,结果集的大小是返回的行数** (3认同)

gbn*_*gbn 8

  • UNION将删除重复项
  • UNION ALL并没有删除重复

SELECT 1 AS foo
UNION
SELECT 1 AS foo

= one row

SELECT 1 AS foo
UNION ALL
SELECT 1 AS foo

= two rows
Run Code Online (Sandbox Code Playgroud)