基本上,我的问题是 - 我有一个价格列表,其中一些是历史价格(即我希望能够搜索该产品 X 在 3 月 11 日为 0.99 美元,在 4 月 1 日为 1.99 美元,等等...) .存储此信息的最佳方式是什么?
我假设我可能会有一个 Product 表,其中包含一个指向价格表的外键。我最初认为存储当前价格可能是最好的选择,但我想我希望能够存储历史价格数据,所以更好的方法是存储如下表的价格表:
CREATE TABLE prices (
id BIGINT auto_increment not null,
primary key (id),
price DECIMAL(4,2) not null,
effectiveStartDate DATETIME NOT NULL,
effectiveEndDate DATETIME
);
我在这里有点不知所措。我希望能够高效地搜索产品并查看该产品的价格随时间的变化情况。我怎样才能有效地将一组这些价格与产品相关联?我想我想问的是,“为了能够高效搜索跨越一组特定日期的查询,最好的索引方式是什么?”
最佳答案
将对历史数据的需求与对当前价格的需求分开。这意味着:
1) 在产品表中保留当前价格。
2) 当价格发生变化时,将新价格插入到历史表中,只有开始日期。您实际上并不需要结束日期,因为您可以从上一行中获取它。 (还是可以放进去,查询起来更方便)
另请记住,您的订单历史记录提供了另一种历史记录,即一段时间内以给定价格进行的实际购买。
关于mysql - 在 MySQL 表中存储历史价目表的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4823025/