mysql多表连查的性能问题
存在以下问题
嵌套循环连接(nested loop join--NLJ)
类似于我们平时写的多层嵌套循环,这个性能受第一层循环的次数影响。一般是小表驱动大表的方式,当小表筛选后的数量很大,则性能就越低;
解决办法
-
系统前期数据量不大的情况下可以拆成多个单表查询,因为前期数据量不大,查出来的数据量也比较少,多个单表的查询性能也不会相差太多。
-
数据量到达一定程度,多个单表查询就会遇到一些比较棘手的性能问题了。这时可以生成一个包括多表关键信息的冗余表
-
···
以上说的并不绝对,还是得根据具体业务需求分析,采取合适的方案。冗余表这个方法其实缺陷也很明显,系统不大的情况下是一个不错的解决方案,但是冗余违背了大数据设计oneData方法论,也会增加后期不必要的维护成本。必要时可以分析业务需要,通过增加ES等组件提高系统的可维护性,可扩展性。

浙公网安备 33010602011771号