gpt4 book ai didi

sql - 使用 SUM() 或缓存

转载 作者:行者123 更新时间:2023-12-04 14:09:28 25 4
gpt4 key购买 nike

我对数据库没有太多经验,所以我不知道哪个更适合长期性能,更好的实践等。

这是我的(假设)案例:假设您有一个客户信息数据库和每个客户的采购订单历史记录。您想跟踪每个客户的购买量。我可以想到两种计算方法:

1) 每次需要时只做一个 SUM() 。这是一个简单的解决方案,但令人担忧的是,该数据库可能已有 20 年的历史,每个客户都有数万行。随着越来越多的客户购买被添加到数据库中,SUM() 操作将需要更长的时间来计算。

2) 将总和缓存在客户信息表中,每次有新购买(更新、删除等)时,更新此缓存。这样无论有多少采购订单,都不会增加计算时间。缺点是,这是一个不太灵活的解决方案(只有所有行的总和,每月总和怎么样?其他间隔?等);这个缓存的值可能会以某种方式与实际总数不同步(技术上不应该发生,但它可能会发生)

那么我应该怎么做呢?我知道我不应该存储任何我可以从数据库中已经存在的东西计算出来的东西,但我的一部分不喜欢这种类型的计算会随着时间变得更糟,并且有某种优雅的选择2.

最佳答案

在数据库方面,选项 2 没有优雅之处——如果你的数据库变得非常庞大,它会被认为是一种你可以作为最后手段使用的 hack——对于第一次设置它的新手来说不太可能发生(但可能)。

维护总数会有很多工作;你会永远处理这个问题:“为什么细节加起来不等于总数?”

选择选项 1,直到你证明你不能。在大多数情况下,这将是很长时间。

关于sql - 使用 SUM() 或缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/319579/

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