Sql server 是否从最新历史记录表或项目行获取当前数据?

Sql server 是否从最新历史记录表或项目行获取当前数据?,sql-server,performance,Sql Server,Performance,我必须存储历史定价数据历史记录列表。我使用历史数据查看过去28天的情况。我从过去28天中选择最高值,然后将其与当前值进行比较,其中差异是销售折扣 我们的DBA说,将数据存储在一个表中,该表的FROM DATE和TO DATE都是NULL,即当前价格。但是,出于性能原因,他还希望在stock items表中存储当前价格。将有触发器确保库存项目价格与价格历史数据中的最新价格匹配。我认为一个库存商品的价格变动不会超过10次 我忍不住想,把目前的价格放在两个地方是个坏主意。但是,我也喜欢从库存项目行获取

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

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

我忍不住想,把目前的价格放在两个地方是个坏主意。但是,我也喜欢从库存项目行获取当前的股票价格。我们有一个sql 2000数据库


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

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

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

根据最有可能是实际库存项目行中的价格的总体设计(您可能已经获得该行的其他数据)

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

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

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

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