示例
示例
-- 有重复可能时才用去重的 UNION
SELECT id FROM orders_2023
UNION
SELECT id FROM orders_2024;
-- 无重复语义用 UNION ALL:省去去重
SELECT id FROM orders_2023
UNION ALL
SELECT id FROM orders_2024;
-- 分支内各自 LIMIT,外层统一排序
(SELECT id, created_at FROM orders_2023 ORDER BY created_at DESC LIMIT 10)
UNION ALL
(SELECT id, created_at FROM orders_2024 ORDER BY created_at DESC LIMIT 10)
ORDER BY created_at DESC LIMIT 10;| 去重代价 | UNION 多数实现要走临时表或排序去重 |
|---|---|
| 分支排序 | MySQL 支持括号包裹的分支各自 ORDER BY + LIMIT |
| 索引 | 每个分支独立使用各自的索引与过滤条件 |