为什么 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。
我希望这是有道理的。