连接节点
| 算法 | 适用场景 |
|---|---|
| Nested Loop | 驱动集小且内表连接列有索引:逐行查找 |
| Hash Join | 等值连接、两侧数据量较大:构建哈希表后探测 |
| Merge Join | 两侧已按键有序(排序或索引输出):归并匹配 |
示例
示例
EXPLAIN
SELECT u.name, o.total
FROM users u
JOIN orders o ON o.user_id = u.id
WHERE u.city = 'shanghai';
-- 输出可能出现:
-- Hash Join (cost=...)
-- Hash Cond: (o.user_id = u.id)| 选择依据 | 估算行数、可用索引、是否需要排序 |
|---|---|
| 哈希内存 | Hash Join 受 work_mem 限制,超出会分批落盘 |
| 并行 | Gather / Gather Merge 表示并行执行,配合 workers planned 查看 |