MySQL两个表的亲密接触-连接查询的原理( 三 )


 
MySQL对于被驱动表的关联字段没索引的关联查询 , 一般都会使用 BNL 算法 。如果有索引一般选择 NLJ 算法 , 有 索引的情况下 NLJ 算法比 BNL算法性能更高 。
关联查询优化总结

  1. 超过三个表禁止 join 。【阿里巴巴JAVA开发手册】
  2. 需要 join 的字段 , 数据类型必须绝对一致;【阿里巴巴JAVA开发手册】
  3. 多表关联查询时 , 保证被关联的字段需要有索引 , 尽量选择NLJ算法 。【阿里巴巴JAVA开发手册】
  4. 小表驱动大表 , 写多表连接sql时如果明确知道哪张表是小表可以用straight_join写法固定连接驱动方式 , 省去mysql优化器自己判断的时间

【MySQL两个表的亲密接触-连接查询的原理】


推荐阅读