Select 求和或更新总余额字段?

Select sum or updating a field for Total Balance?

我正在使用 Entity Framework 和 Azure Sql。

我有用户,他们有余额记录 table.Some 用户可能有 100 万 record.I 在每个 http 请求之前需要用户的总余额。

我有两种获取用户总余额的方法:

首先: 在事务中插入余额并更新 totalbalance 字段(单独)。

transaction(
InsertBalance(amount)
Update CustomerSummary Set Totalbalance=Totalbalance+Amount
)

如果我需要总余额,我会 select 来自 CustomerSummary table.

第二种:不使用任何交易直接插入余额。 如果我需要总余额,我必须通过查询获得总和。

第一种方法对总余额可靠吗?

我可以像第一种方法一样快速地获得第二种方法的总和吗?

第二种方法保证准确——如果您想要特定列的总和,没有比计算总和的查询更准确的了。

维护摘要的原因 table 是为了性能。通常,这样的 table 以两种方式之一维护:

  • 触发器
  • 包装所有个数据修改操作的存储过程

您的 insert 示例是 "application-side" 解决方案。危险在于有人可能会说余额不正确,然后直接在数据库中更改值。总数不变。

要使其正常工作,您需要对数据库的访问进行正确的控制,以确保每当 amount 发生变化时,其所有依赖项都会发生变化。注意:如果您在需要时计算余额,这不是问题。