0

我创建了一个带有字段 X 和字段 DATE 的 SQL 表。我想计算 DATE < d 的 X 的总和。我有两种可能:

  • 创建一个新字段,“sum of X”,表示当 date < date[field] 时 X 的总和
  • 使用 SQL 请求“手动”计算 X 的总和

有没有一种永远优越的方法?或者,如果不是,我认为这取决于表的大小。使这两种方法相等的近似大小是多少?

非常感谢。

4

2 回答 2

2

有没有一种永远优越的方法?

不会。但总的来说,坚持使用最简单的解决方案,直到您发现它不再起作用。在这种情况下,最简单的解决方案是每次需要时计算派生字段。

或者,如果不是,我认为这取决于表的大小。

是的。以及插入次数与读取次数。以及日期是否单调递增。以及系统及其要求的空间(内存/磁盘)与时间(处理能力)的权衡。可能还有很多其他的事情。

使这两种方法相等的近似大小是多少?

一段绳子有多长?太多其他变量无法回答这个问题。

重复一遍:坚持简单,直到被迫做其他事情。维护缓存值会引入复杂性和极端情况:您的事务边界是什么?如果添加新行会发生什么?这可能会触发后续事务以检测和更新受影响的行。如果您随后回滚原始事务会发生什么?

符合逻辑。出错的可能性更大。坚持使用YAGNI,直到你发现你做到了。

hth。

于 2013-02-08T00:46:34.947 回答
0

不要存储计算字段以避免数据不一致。当您有这样的问题时,请考虑您的模型以及是否应该发展以使该问题过时。

于 2013-02-08T13:48:59.837 回答