0

我必须存储历史定价数据历史列表。我使用历史数据查看过去 28 天。我选择过去 28 天中的最高值,然后将其与当前值进行比较,差值是销售折扣。

我们的 DBA 说将数据存储在具有 FROM DATE 和 TO DATE 的表中,TO DATE 为 NULL 将是当前价格。然而,出于性能原因,他还希望将当前价格存储在库存项目表中。将有触发器来确保库存项目价格与价格历史数据中的最新价格相匹配。我认为库存商品的价格变化不会超过 10 次

我不禁认为在两个位置拥有当前价格是个坏主意。但是,我也喜欢从股票项目行中获取当前股票价格。我们有一个 sql 2000 数据库。

不确定最好的方法是什么。

4

1 回答 1

0

任何一种方法都是有效的。决定因素应该是每个解决方案的整体性能影响。

由于查找当前价格可能比更新价格更频繁,因此您应该选择一种能够最大限度地提高查找性能的解决方案。

取决于整体设计,这很可能是实际库存项目行中的价格(无论如何,您可能已经为其他数据获取该行)。

更新另一个表中价格的触发器只会在价格更新时执行,因此触发器的性能命中不会影响应用程序的整体性能。

此外,如果您需要经常查找过去 28 天的最高价格,最好让触发器将该值也存储在您的库存项目行中。

这确实会导致一些数据冗余,但性能优势可能是值得的。

数据完整性的关键是确保触发器正常工作。

于 2012-09-06T19:58:33.667 回答