为什么不推荐使用Join
在阿里的Java开发规范手册中,写明“超过三个表禁止使用Join”
难以进行维护,影响代码阅读。复杂的Join查询难以阅读和维护,尤其是在多表连接中需要处理多个连接条件和筛选条件。容易出现逻辑错误,难以排查问题。
索引的设计将变得复杂。为了提高多表Join查询的性能,需要为每个表创建合适的索引,这样也就增加了索引的设计与维护的复杂性。
最主要要的原因在于其Join本身的效率就比较低。MySQL采用循环嵌套的方式来实现关联查询(用第一张表做外循环,第二张表做内循环,外循环的每一套记录跟内循环中的记录作比较,符合条件的则输出)。如果有两张表的join,复杂度最高为O(n^2)。三张表则是O(n^3)。所以当join的表越多,join的效率会呈指数级下降。




