原因
阿里的 Java 规范手册里面就有一句话:“超过三个表禁止使用 Join”。这是为什么呢?理由有如下几点🔽:
1)⭐多表 Join 操作可能导致性能问题,尤其是在处理大数据量时,Join 操作需要对参与联接的每个表进行扫描、匹配和组合,消耗大量的 CPU 和内存资源,从而导致查询时间变长。
2)⭐难以维护,影响代码阅读。复杂的 Join 查询难以阅读和维护,尤其是在多表联接中需要处理多个联接条件和筛选条件。容易出现逻辑错误,难以排查问题。
3)⭐索引设计变得复杂。为了提高多表 Join 查询的性能,需要为每个表创建合适的索引,但这也增加了索引设计和维护的复杂性。
4)⭐优化器选择最佳计划能力可能下降。数据库优化器在处理复杂的多表 Join 查询时,可能无法选择最佳的执行计划,导致性能不佳。
举个现实中的例子🌰:
想象一下,你在一个图书馆里查找某个特定主题的书籍:
1)🚀单表查询:你只需要在一本分类清晰的目录中查找书名,很快就能找到目标书籍。
2)⚡多表 Join :你需要先在多个目录中分别查找,然后将这些目录信息进行匹配和组合,找到目标书籍。这个过程不仅耗时,还容易出错。