在過去的幾周內,我剛剛了解了作為數據庫 ORM 的 GORM。檢查代碼內部后,每個命令(限制、順序、位置或選擇等)都通過克隆當前數據庫返回新實例。這里有沒有人知道克隆數據庫而不是使用當前實例的主要目的是什么?當我有命令 select、where、limit、order、join 時,這將是克隆數據庫實例的 5 次。AFAIK,在內存上創建對象很昂貴。
1 回答

夢里花落0921
TA貢獻1772條經驗 獲得超6個贊
目的是能夠存儲查詢的“臨時”實例,以便以后能夠導出它們。也就是說,如果您有許多共享序列的某些部分的查詢,您應該能夠執行類似的操作
q := gorm.Select(...).Limit(...).Order(...)
q1 := q.Where(...)
q2 := q.Where(...)
(這個例子是一個粗略的例子,可能甚至沒有映射到 GORM API,因為我自己不使用它。)
現在,我相信與執行 SQL 查詢的成本相比,在內存中克隆不會保留很長時間的對象不會影響太多性能,這意味著網絡往返......
- 1 回答
- 0 關注
- 173 瀏覽
添加回答
舉報
0/150
提交
取消