zoukankan      html  css  js  c++  java
  • N+1优化

    什么是N+1问题

    A对象关联B对象,A对象进行列表展示时需显示B对象的关联属性,这样需要先用一条sql将N个A对象查询出来,再用N条sql将这些对象的关联属性查询出来。违背了减少数据库交互原则,影响性能。

    解决方法

    方法一

    连接查询,在查询A对象的时候,将关联的B对象查询出来。

    缺点

    1. 连接的表增加,sql性能下降;

    2. 如果N个A对象关联的是同一个B对象, 大专栏  N+1优化会使结果集非常庞大,返回结果集需要消耗性能,并且影响排序性能。比如100个员工对象都关联ID为1的部门,本来部门的数据只需出现一次,这里为了避免N+1,重复出现100次。

    方法二

    A表中设置冗余字段。

    缺点:更新B表需要更新A表。更新A表时需要增加修改B对象属性的逻辑。

    方法三

    性能最佳,1+1查询。

    先用sql查出所有员工对象查询出,将他们关联的部门ID放到一个集合中,再发一条sql,将所有部门查出,之后在程序中将部门信息设置到员工对象中。

  • 相关阅读:
    GitLab-添加SSH Key亲历教程
    java-数组Array的应用总结
    Java-方法的重载和重写
    JSON-相关的工具收藏分享
    java-无重复的排列组合小技能
    Charles安装与使用
    深拷贝浅拷贝
    文件操作
    列表生成式
    非空即真,非零即真
  • 原文地址:https://www.cnblogs.com/lijianming180/p/12409366.html
Copyright © 2011-2022 走看看