gpt4 book ai didi

go - Gorm Preload 功能在性能方面是一个很好的实践吗?

转载 作者:行者123 更新时间:2023-12-03 01:26:15 54 4
gpt4 key购买 nike

为什么 Gorm 中的 Preload 函数是一个“好的实践”,因为每次调用它时它都会检索给定表的所有记录(热切加载)?

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

最佳答案

我不知道你在说什么;

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

给定两个表:kake 和 topping:

kake(名称str)打顶(名称str)

如果您加入,您将拥有比匹配时大得多的集合(磁盘输入输出、内存);

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

表快照

蛋糕:

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。

我希望这是有道理的。

关于go - Gorm Preload 功能在性能方面是一个很好的实践吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59277855/

54 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com