因为left jion会有字符,不能命中索引等原因导致全表扫描,所以可能出现这些问题的时候用子查询比较好。选填的一些信息比如标签,使用在a left join b的时候可能因为有些数据没有导致全表扫描,扫描数量就是a(查询数量)*b(全表),不如in子查询select b in select a扫描大概是a(查询数量)+b(全表)。用left join原因是比如商品列表带标签,你不能不返回商品。
以下借鉴
MySQL Join原理_mysql的join原理_-小龙人的博客-优快云博客mysql join 和left join 对于索引的问题_为什么left join会走索引,子查询不会_hongmingover的博客-优快云博客