GORM Golang:克隆数据库实例的目的
GORM Golang : the purpose of cloning DB instance
在过去的几个星期里,我刚刚了解了 GORM 作为数据库 ORM。检查代码内部后,每个命令(limit、order、where 或 select 等)都通过克隆当前数据库返回新实例。
这里有没有人知道克隆数据库而不是使用当前实例的主要目的是什么?
当我有命令 select、where、limit、order、join 时,这将是克隆数据库实例的 5 次。据我所知,在内存上创建对象很昂贵。
目的是能够存储 "temporary" 您的查询实例,以便以后能够派生它们。也就是说,如果您有许多共享序列某些部分的查询,您应该能够执行类似
q := gorm.Select(...).Limit(...).Order(...)
q1 := q.Where(...)
q2 := q.Where(...)
(这个例子是一个粗略的例子,可能甚至没有映射到 GORM API 因为我自己不使用它。)
现在,我相信与执行 SQL 查询的成本相比,在内存中克隆不会长期保存的对象不会影响太多性能,这意味着网络往返…
在过去的几个星期里,我刚刚了解了 GORM 作为数据库 ORM。检查代码内部后,每个命令(limit、order、where 或 select 等)都通过克隆当前数据库返回新实例。
这里有没有人知道克隆数据库而不是使用当前实例的主要目的是什么?
当我有命令 select、where、limit、order、join 时,这将是克隆数据库实例的 5 次。据我所知,在内存上创建对象很昂贵。
目的是能够存储 "temporary" 您的查询实例,以便以后能够派生它们。也就是说,如果您有许多共享序列某些部分的查询,您应该能够执行类似
q := gorm.Select(...).Limit(...).Order(...)
q1 := q.Where(...)
q2 := q.Where(...)
(这个例子是一个粗略的例子,可能甚至没有映射到 GORM API 因为我自己不使用它。)
现在,我相信与执行 SQL 查询的成本相比,在内存中克隆不会长期保存的对象不会影响太多性能,这意味着网络往返…