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

    N+1问题  

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

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

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

  • 相关阅读:
    Javascript中得到中英文混合字符串的长度
    通往幸福之路之贷款篇
    骠叔
    神医
    买酱油与软件工程阶段划分
    XSLT中用normalizespace函数来清除元素的前后空格
    论屎
    Web程序中利用web.config解决无法输出excel页面的问题
    项目打单时该写什么文挡
    天桥底下是我家
  • 原文地址:https://www.cnblogs.com/xhbJava/p/12372981.html
Copyright © 2011-2022 走看看