【发布时间】:2009-08-13 12:07:22
【问题描述】:
我有一个应用程序,用户在其中执行操作并获得积分。在应用程序中执行算术并使用结果值更新点数据库字段,或者让数据库进行数学运算会更好吗?
假设一个积分为 0 的用户额外获得 2 分:
//app does the math (0+2) and issues this statement
update users set points = 2 where id = 1
对
//app only knows to update by 2, db does the math
update users set points = points+2 where id = 1
在 SQL 性能方面有什么不同吗?就应用程序设计、此逻辑应驻留在何处等而言,一种方法是否比另一种方法更好?
编辑:此编辑可能为时已晚,无法起到很好的作用,但我只是想回应一些反馈并做出澄清。虽然我对任何 db 性能差异感到好奇,但这不是一个关注。我关心的是这种逻辑在哪里最适合,为什么一个应该比另一个更受青睐,以及在哪些情况下。
一方面,我几乎所有的逻辑都驻留在应用程序中,因此在那里进行数学运算是一致的,like Hank's answer。但另一方面,Blixt 和 Andrew 提出的一些潜在的延迟/线程问题可能表明逻辑应该由数据库执行。
【问题讨论】:
-
我认为这可能是主观和争论的,虽然我有兴趣看到人们提出的案例
标签: .net sql sql-server