1.gorm的定义

2.ORM是什么


3.怎么进行数据库的迁移
4.遇到过Gorm的性能问题吗,怎么优化
主要是 ORM 默认生成的 SQL 不够高效。比如有些多表关联时会出现 N+1 查询。
我的优化方式有几种:
预加载(Preload),避免循环里每次单独查询。
选择性字段查询,只查询需要的列,减少网络传输。
建索引,对于高频查询的字段,比如审批状态、时间戳,提前加上索引。
必要时用原生 SQL,在复杂聚合和统计场景下,我会用
db.Raw来写原生 SQL,性能更好。
通过这些手段,性能瓶颈基本能解决。
5.什么是N+1问题

定义:在 ORM 查询中,如果你先查出一批主记录,然后对每条记录再去单独查一次关联数据,就会导致总共执行 N+1 条 SQL(1 条查询主数据 + N 条查询关联数据)。
危害:当 N 很大时,数据库压力成倍增加,严重影响性能。
N+1 问题是指查询主表数据后,又对每条记录额外发起一次查询,导致总共执行 N+1 条 SQL。比如查 100 个用户,再分别查他们的订单,就是 101 次 SQL,非常低效。
在项目中我主要通过 Gorm 的 Preload 预加载解决,另外在一些复杂统计场景下,会改用批量查询或直接写 Join SQL 来优化。这样可以把 N+1 降到 2~3 次查询,显著提升性能。
6.预加载是怎么实现的

7.为什么不用预加载


8.实际使用注意事项
每次都显示的用model指定表,指针和表实际内容都行,指针性能更好
1.select时

2.更新统一用updates
1.无法更新零值问题
统一用map来更新,解决gorm默认更新0值结构体的问题

3.删除时

评论