我正在用Yii2和MySQL开发一种金融计算器。 我的数据库中有一个“操作”表,用于存储所有用户的所有交易(收入和成本)。我想在用户的仪表板中显示当前的余额。
表的“操作”:
status
0
是一列带有用户创建新操作的时间戳记的列,而actions
是用户为该操作选择的日期。
我知道我可以为用户汇总所有事务并显示结果,但是如果事务数量巨大,数据库的负载将很大。因此,我需要推荐用于存储交易和余额的正确方法。
我想我可以创建一个表,在其中存储每个月的用户余额,并使用这些值来计算当前的运行余额。这可能吗?
但是,如果用户决定更改上个月交易之一的价值,我需要重新计算该月和接下来几个月的余额吗?是正确的方法吗?
答案 0 :(得分:0)
一个简单的查询
SELECT SUM(sum) FROM operations where user_id = {id}
就足够了。如果仅对一个用户执行操作,则不会对数据库造成太大的负担。假设您有100万条所有用户记录。就执行时间和资源而言,此查询都应该很好。我们有一个包含数百万个这样的事务的数据库,这大约需要400毫秒,几乎没有资源使用。
您可以创建一个表来存储每个用户的余额,但这不是必需的。绝对可以,但是如果我是你,我会坚持下去。当然,如果您正在进行数十亿笔交易,那么您可以考虑这样做,但是我怀疑这将会成为现实。