最好将所有这些点放在一张表中,还是将它们分成单独的表更有效?
标准化数据总是更有效。
如果我添加更多的时间点和价格,会显着减慢查询速度吗?
这取决于您使用的数据库类型。关系数据库是为标准化数据设计的。
对于具有多种价格的商品,您可以按照以下方式对数据进行建模。
Item
----
Item ID
Item Name
Price
...
ItemPrice
---------
ItemPrice ID
Item ID
Price
From Time Stamp
To Time Stamp
表的第一列中的 ID 字段是主集群键、自动递增的 int 或 long。
表中Item
价格为平时价格。
在ItemPrice
表中,您还有一个唯一索引(项目 ID,从时间戳降序)。从时间戳和到时间戳将定义更改价格的日期和时间。
因此,每次您在网站应用程序代码中查找价格时,您ItemPrice
首先检查该表。如果您没有得到更改的价格行,则使用Item
表中的价格。
您还必须确保在您的网站应用程序代码中,在给定的日期/时间范围内只有一个更改的价格。
当您想每隔一段时间(例如每月)更改价格时,从时间戳和到时间戳工作。如果您想定期更改周日价格,您还需要一个日历表,以便您的网站应用程序可以从日历中生成时间戳。