有道-PDF短记-SQL-UNION与UNION-ALL边界

UNIONUNION ALL 的结果边界

UNION 合并查询结果时,对整行结果去重;UNION ALL 保留重复行。如果业务需要保留每个来源的记录,误用 UNION 可能使结果行数减少。去重也可能带来额外的排序或哈希开销,具体执行方式以目标数据库的执行计划为准。

参与合并的各个查询需要返回相同数量的列,且对应位置的数据类型应能兼容。没有最终的 ORDER BY 时,不应依赖结果行的出现顺序。原笔记中的示例有语法残缺,本页只保留语义,不复用该查询。

核查边界

  • 先确认想要的是集合去重还是完整保留,再用小样本和执行计划验证结果及代价。
  • 原笔记没有目标表结构或数据库版本,未对特定查询做运行验证。