前言

本文中使用到的数据表结构以及GORM版本的区分详见以下文章:GORM v2 一对一关联查询使用(Belongs To 、Has One)

执行区别

调用gorm的Debug方法打印一下一对一关联时SQL语句执行过程。

Preload执行过程

执行代码

db.Debug().Preload("Info").First(&student)

执行结果

从图中可以看出,gorm执行了两条SQL来获取主副表数据

SELECT * FROM `students` ORDER BY `students`.`id` LIMIT 1SELECT * FROM `information` WHERE `information`.`student_id` = 1

Joins执行过程

执行代码

db.Debug().Joins("Info").First(&student)

执行结果

从图中可以看出,使用Joins后,只执行一条SQL语句就获得了结果

SELECT `students`.`id`,`students`.`name`,`Info`.`id` AS `Info__id`,`Info`.`student_id` AS `Info__student_id`,`Info`.`sex` AS `Info__sex`,`Info`.`age` AS `Info__age`,`Info`.`hometown` AS `Info__hometown` FROM `students` LEFT JOIN `information` `Info` ON `students`.`id` = `Info`.`student_id` WHERE `students`.`id` = 1 ORDER BY `students`.`id` LIMIT 1

结果

两种预加载的差别:

  • Preload会分开多条SQL语句来执行获取结果
  • Joins会使用left join一条SQL语句直接获取到结果
  • 另外,需要注意的是:Joins只能用于一对一关联中,即HasOne和BelongTo关联

GORM v2 关联预加载Preload和Joins的区别相关推荐

  1. Laravel5.2之模型关联预加载

    2019独角兽企业重金招聘Python工程师标准>>> 说明:本文主要说明Laravel Eloquent的延迟预加载(Eager Loading),使用延迟预加载来减少MySQL查 ...

  2. 【第1159期】CSS预加载Preload

    前言 看天气预报,今天好多地方都开始下雪了.今日早读文章由@李斌分享. 正文从这开始- Preload 作为一个新的web标准,旨在提高性能和为web开发人员提供更细粒度的加载控制.Preload使开 ...

  3. prefetch 和preload_资源预加载preload和资源预读取prefetch简明学习

    前面的话 基于VUE的前端小站改造成SSR服务器端渲染后,HTML文档会自动使用preload和prefetch来预加载所需资源,本文将详细介绍preload和prefetch的使用 资源优先级 在介 ...

  4. android调用h5预加载图片,图片预加载 preload

    图片预加载 HTML5学堂:2014年年初的时候,曾经在自己的博客"独行冰海"里写过关于图片预加载和懒加载的博文,当时的文章当中没有写什么关于预载的代码范例,当前打算把预载和懒载分 ...

  5. 【GoLang】《GORM实战》第三篇:关联与预加载

    文章目录 关联 分类 重写外键.引用 多态关联 外键约束 关联操作 自动添加关联 关联模式 查询关联 添加关联 替换关联 删除关联 级联删除 清空关联 关联计数 批量处理数据 预加载 Preload ...

  6. jQuery插件之图片预加载

    背景: 图片是web页面的重要组成部分,也是前端页面优化的重要内容.当用户访问一个比较庞大的页面时,若相关资源没有提前加载,可能会展示给用户一片空白,从而导致用户流失等:再比如受网速的影响,资源加载时 ...

  7. vue实现图片预加载实操

    业务场景是这样的:在页面里有一个提醒文案,提醒文案里有个按钮,点击按钮会弹出示例弹窗,弹窗里上面有标题,中间一个比较大的图片,27kb:下面有个按钮.在苹果手机使用微信打开时,上面的标题和下面的按钮都 ...

  8. 2020-08-23 html的标签预加载 + css的新知识 + JS的json的标准格式 + 软技能的能说会道vs安静做事

    2020-08-23 题目来源:http://www.h-camel.com/index.html [html] html的哪个标签可以预加载? 通过浏览器特性来提高资源加载速度的方法: 1.DNS ...

  9. gorm软删除_gorm 的预加载怎么才能关掉软删除-问答-阿里云开发者社区-阿里云

    gorm 的预加载怎么才能关掉软删除 type CourseType struct { gorm.Model TypeName string CreatedAt time.Time UpdatedAt ...

最新文章

  1. Jazzy 文档生成器使用
  2. EdgeGallery — MEP — 系统架构
  3. 告诉你你也学不会!中台灵感 SuperCell 的管理之道!
  4. CentOS7 网络安装流程
  5. VMware虚拟机磁盘操作占用过高问题(转:http://blog.csdn.net/New_When/article/details/73731149)
  6. 企业使用开源软件的风险
  7. LeetCode MySQL 1270. 向公司CEO汇报工作的所有人
  8. dw新建php文件自动生成html,dw如何新建css规则
  9. Python 文件学习笔记之 File(文件) 对象常用函数
  10. mysql java 代码生成器_java代码生成器
  11. 【个人笔记】OpenCV4 C++ 快速入门 23课
  12. RFIC4463_F2C
  13. 神奇的机器人评课_小学信息技术《我的编程我做主——点亮神奇的灯》评课稿...
  14. git(4)服务器上的 Git
  15. 你会用微信付款码支付吗?一定要打开这个设置,保障你资金安全
  16. JS根据屏幕分辨率自动调整字体大小
  17. 游戏社区App (三):客户端与服务端的加密处理 和 登录
  18. 阿里云的云安全防护产品有哪些?都有什么作用?
  19. python3项目源代码下载_GitHub 上适合新手的 Python 开源项目
  20. Elasticsearch分片原理

热门文章

  1. Unity Shader 之图片菱形切割
  2. 【图像算法】pytesseract简单实现图片数字识别
  3. 删除了大文件,但是磁盘并没有释放
  4. 智慧公交站台:EasyCVR智能视频平台助力城市智慧交通建设
  5. 什么是通信协议?什么是互操作性?
  6. 彻底删除oracle数据,彻底删除Oracle数据库的方法
  7. springfox集成教程
  8. mysql 军规_MySQL数据库军规
  9. MyBatis中的resultMap两个association
  10. 压缩感知的常见测量矩阵