示例
示例
EXPLAIN
SELECT u.name, o.total
FROM users u
JOIN orders o ON o.user_id = u.id
WHERE u.city = 'shanghai' AND o.status = 'paid';
-- users 行在上、orders 行在下:先访问 users(驱动表),再按索引查 orders| id | 查询块编号;子查询与 UNION 会引入新的块 |
|---|---|
| 驱动表 | 先访问并产出连接键的一方;结果小、过滤强的一方更适合做驱动 |
| 干预方式 | 改写连接顺序、STRAIGHT_JOIN、JOIN_ORDER 提示;PostgreSQL 可调 join_collapse_limit |