首页 > 数据库 >mysql多表连查的性能问题

mysql多表连查的性能问题

时间:2022-11-06 12:24:03浏览次数:47  
标签:多表连查 性能 系统 查询 单表 数据量 mysql 冗余

存在以下问题

嵌套循环连接(nested loop join--NLJ)

类似于我们平时写的多层嵌套循环,这个性能受第一层循环的次数影响。一般是小表驱动大表的方式,当小表筛选后的数量很大,则性能就越低;

还有一个问题就是现在的互联网应用业务需求复杂多变,为了支撑系统的平稳迭代发展,架构设计上需要考虑可高扩展性,单表数据量达到一定级别时,即使有可以优化表的结构等等临时方法,但是后期还是避免不了需要分库分表,以达到更好的数据库性能。而join连表查询这种硬编码的方式后期改动起来就很头痛,维护成本极大,所以出现了一些开发规范禁止Join关联。(但这不是绝对的,还是得具体问题具体分析,不同的系统阶段应该采取不同的方案)

解决办法

  • 系统前期数据量不大的情况下可以拆成多个单表查询,因为前期数据量不大,查出来的数据量也比较少,多个单表的查询性能也不会相差太多。

  • 数据量到达一定程度,多个单表查询就会遇到一些比较棘手的性能问题了。这时可以生成一个包括多表关键信息的冗余表

  • ···

以上说的并不绝对,还是得根据具体业务需求分析,采取合适的方案。冗余表这个方法其实缺陷也很明显,系统不大的情况下是一个不错的解决方案,但是冗余违背了大数据设计oneData方法论,也会增加后期不必要的维护成本。必要时可以分析业务需要,通过增加ES等组件提高系统的可维护性,可扩展性。

 

标签:多表连查,性能,系统,查询,单表,数据量,mysql,冗余
From: https://www.cnblogs.com/road2master/p/16862369.html

相关文章