就性能而言,Gorm 预加载函数是否是一种好的做法?



为什么 Gorm 中的预加载函数是一种"很好的做法",因为它每次调用时都会检索给定表的所有记录(预先加载(?

我看到很多人在处理关系时将预加载作为很好的解决方案,我不明白为什么。

我不知道你在说什么;

但一般来说;连接/与查找的计算成本是不同的。

给定两个表:Kake 和浇头:

卡克(名称斯特( 浇头(名称 str(

如果您加入,您将拥有比 in 更大的集合(磁盘输入输出、内存(如果您进行匹配;

因为您需要计算所有排列。

表快照

蛋糕:

1|napoleon
2|chocolate
3|cheese

一流:

1|butter
2|frosting
3|cacao
4|white cacao
5|goat chese
6|cow chese
7|chinese chese
...|nuts
...|avocado
...|white chocolate
11:cherry-flavor

查询逻辑

使用一般连接,您将获得结果 3 x 11 - 所有蛋糕乘以所有浇头。

这可能看起来微不足道,但当表有 1000+ 条记录时,情况并非如此。

使用"预加载",您将拥有;

get all topings for napoleon => only frosting
get all topings for chocolate  => only cacao
get all toppings for cheese => only cow chese and only chinise chese

然后;鉴于我的拿破仑+巧克力+奶酪,

你可以避免:黄油,樱桃味

因此,您仅选择相关的相关记录。

这并不简单。 它会导致其他问题。 但一般来说,如果你能说:

我需要所有的x,y,z,而不是a,b,c。

我希望这是有道理的。

最新更新