二、多表查询与笛卡尔积
多表查询
select * from A,B
会导致笛卡尔积,查出无用的数据。
left join 可以允许右关联字段为空
right join 可以允许左关联字段为空
inner join 关联条件不能为空
1. 什么是驱动表?
多表关联查询时,第一个被处理的表就是驱动表,使用驱动表去关联其他表。
(一)三种 join 算法
简单的嵌套循环连接
select * from user t1 left join order t2 on t1.id=t2.user_id

时间复杂度 O(MN)
M,N 分别为两张表的长度。
索引嵌套循环连接

时间复杂度 O(索引高度*N)
(二)left join(允许右表为 null)
user left join address
left join 就是查所有人 + 能匹配到的地址
left join 左表条件写在 where 里,右表条件写在 on 里。
如果在 where 条件里过滤右表,left join 就变成 inner join 了
