TiDB 支持的 Join 算法
Index Nested Loop Join(INLJ) 
类似 MySQL 5.7
- 适合:小表驱动大表 + 有索引
- 最常见
Hash Join
(重点)
TiDB 默认最常用
- 构建 hash 表(build side)
- 探测匹配(probe side)
适合:
- 大表 join
- 无索引场景
Hash Join: build hash on smaller table, then probe with larger tableHash Join: build hash on smaller table, then probe with larger table
Merge Join(Sort Merge Join)
(有限支持)
条件:
- 两边数据 已经有序
否则:
- TiDB 一般不会主动做排序再 merge(成本高)
对比一下 MySQL 5.7
| 能力 | MySQL 5.7 | TiDB |
|---|---|---|
| Nested Loop Join | ||
| Hash Join | ||
| Merge Join | ||
| 分布式 Join |