GORM v2 关联预加载Preload和Joins的区别
前言
本文中使用到的数据表结构以及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的区别相关推荐
- Laravel5.2之模型关联预加载
2019独角兽企业重金招聘Python工程师标准>>> 说明:本文主要说明Laravel Eloquent的延迟预加载(Eager Loading),使用延迟预加载来减少MySQL查 ...
- 【第1159期】CSS预加载Preload
前言 看天气预报,今天好多地方都开始下雪了.今日早读文章由@李斌分享. 正文从这开始- Preload 作为一个新的web标准,旨在提高性能和为web开发人员提供更细粒度的加载控制.Preload使开 ...
- prefetch 和preload_资源预加载preload和资源预读取prefetch简明学习
前面的话 基于VUE的前端小站改造成SSR服务器端渲染后,HTML文档会自动使用preload和prefetch来预加载所需资源,本文将详细介绍preload和prefetch的使用 资源优先级 在介 ...
- android调用h5预加载图片,图片预加载 preload
图片预加载 HTML5学堂:2014年年初的时候,曾经在自己的博客"独行冰海"里写过关于图片预加载和懒加载的博文,当时的文章当中没有写什么关于预载的代码范例,当前打算把预载和懒载分 ...
- 【GoLang】《GORM实战》第三篇:关联与预加载
文章目录 关联 分类 重写外键.引用 多态关联 外键约束 关联操作 自动添加关联 关联模式 查询关联 添加关联 替换关联 删除关联 级联删除 清空关联 关联计数 批量处理数据 预加载 Preload ...
- jQuery插件之图片预加载
背景: 图片是web页面的重要组成部分,也是前端页面优化的重要内容.当用户访问一个比较庞大的页面时,若相关资源没有提前加载,可能会展示给用户一片空白,从而导致用户流失等:再比如受网速的影响,资源加载时 ...
- vue实现图片预加载实操
业务场景是这样的:在页面里有一个提醒文案,提醒文案里有个按钮,点击按钮会弹出示例弹窗,弹窗里上面有标题,中间一个比较大的图片,27kb:下面有个按钮.在苹果手机使用微信打开时,上面的标题和下面的按钮都 ...
- 2020-08-23 html的标签预加载 + css的新知识 + JS的json的标准格式 + 软技能的能说会道vs安静做事
2020-08-23 题目来源:http://www.h-camel.com/index.html [html] html的哪个标签可以预加载? 通过浏览器特性来提高资源加载速度的方法: 1.DNS ...
- gorm软删除_gorm 的预加载怎么才能关掉软删除-问答-阿里云开发者社区-阿里云
gorm 的预加载怎么才能关掉软删除 type CourseType struct { gorm.Model TypeName string CreatedAt time.Time UpdatedAt ...
最新文章
- Jazzy 文档生成器使用
- EdgeGallery — MEP — 系统架构
- 告诉你你也学不会!中台灵感 SuperCell 的管理之道!
- CentOS7 网络安装流程
- VMware虚拟机磁盘操作占用过高问题(转:http://blog.csdn.net/New_When/article/details/73731149)
- 企业使用开源软件的风险
- LeetCode MySQL 1270. 向公司CEO汇报工作的所有人
- dw新建php文件自动生成html,dw如何新建css规则
- Python 文件学习笔记之 File(文件) 对象常用函数
- mysql java 代码生成器_java代码生成器
- 【个人笔记】OpenCV4 C++ 快速入门 23课
- RFIC4463_F2C
- 神奇的机器人评课_小学信息技术《我的编程我做主——点亮神奇的灯》评课稿...
- git(4)服务器上的 Git
- 你会用微信付款码支付吗?一定要打开这个设置,保障你资金安全
- JS根据屏幕分辨率自动调整字体大小
- 游戏社区App (三):客户端与服务端的加密处理 和 登录
- 阿里云的云安全防护产品有哪些?都有什么作用?
- python3项目源代码下载_GitHub 上适合新手的 Python 开源项目
- Elasticsearch分片原理