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
发生变化时,其所有依赖项都会发生变化。注意:如果您在需要时计算余额,这不是问题。
我正在使用 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
发生变化时,其所有依赖项都会发生变化。注意:如果您在需要时计算余额,这不是问题。