示例
示例
SELECT u.id, u.name, s.total
FROM users u
JOIN (
SELECT user_id, SUM(amount) AS total
FROM orders
WHERE status = 1
GROUP BY user_id
) s ON s.user_id = u.id
ORDER BY s.total DESC;| 思路 | 过滤与聚合放在子查询,连接发生在小结果集上 |
|---|---|
| 收益 | 减少连接输入与聚合中间结果 |
| 注意 | 派生表在旧版本可能先物化,改写后用 EXPLAIN 复核 |