MySql Join
概念
- JOIN算法Nested-Loop Join(嵌套循环链接)
- Simple Nested-Loop Join(实际不会用这种)
- Index Nested-Loop Join 索引嵌套(通过索引减少外层与内层每条目比较次数)
- Block Nested-Loop Join 缓存块嵌套循环连接(通过 join buffer 缓存一批外层关联值,减少内层与外层的匹配次数)(如果索引嵌套没有,则默认使用这个,所以尽量要有索引)
- 尽量在 on 的时候过滤调大部分数据
- 小表结果集驱动大表
驱动表
- 通过EXPLAIN分析来判断在sql中谁是驱动表,EXPLAIN语句分析出来的第一行的表即是驱动表
- join
- mysql 会自动选择
- left
- 左边驱动表,要小,右边被驱动,要有索引(Index Nested-Loop Join)
- right
- 右边驱动表,要小,左边被驱动,要有索引(Index Nested-Loop Join)