zoukankan      html  css  js  c++  java
  • Mybaits(10)N+1问题

    N+1问题  

      从上面的例子日志中我们可以看到所有级联都成功了,但是引发了性能问题,例如我们在查询雇员的信息和工作任务信息,此时体检表和工牌信息就是多余,我们没必要查询一次。如果想日志体现的那样,取出了所有的属性,多执行了几条现在用不到的sql这是没有意义的。如果在加入一个关联信息,在默认情况下会执行sql取出数据,而真实需求往往只要完成雇员和雇员任务表级联就可以,不需要把所有的信息都加载处理,加载有些不常用的信息会多执行sql,这样会导致数据库资源浪费和系统性能降低。

      通过上面的例子不难知道,假如我们有N个关联关系进行了级联,那么只要再加入一个关联关系,就变成N+1个级联,所有的级联sql都会被执行,但是有些数据使我们不需要的,不需要加载,这样的话会造成系统资源浪费,这就是N+1问题。

      为了解决N+1问题,MyBatis提供了延迟加载的功能,在开始去雇员信息时,我们将不需要的工牌等信息不进行查询读取,只是将我们需要的雇员信息和任务信息读取出来,当我需要工牌等信息时再进行读取就可以了。

  • 相关阅读:
    c# 正则表达式 首字母转大写
    c# WebBrowser获取cookie
    c# 求最小公倍数
    Response.Redirect与Server.Transfer区别-转
    asp 读文件 比较ip
    asp数组的使用
    如何解决#1045
    mysql limit分页查询效率
    Docker 容器管理:rancher
    Docker监控:google/cadvisor
  • 原文地址:https://www.cnblogs.com/xhbJava/p/12372981.html
Copyright © 2011-2022 走看看