首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何设计一个表,以便有效地将可能是新的或与前一天相同的每日数据保存到MySQL中?

如何设计一个表,以便有效地将可能是新的或与前一天相同的每日数据保存到MySQL中?
EN

Stack Overflow用户
提问于 2020-08-08 15:48:47
回答 1查看 591关注 0票数 1

我有一个脚本,以检查一些产品的销售价格在网站上每天,并希望将它存储在一个MySQL数据库。

有一个存储productID、名称、属性等的产品表。我想出了两种构造销售价格表的方法。

  1. productID,SalePrice,SalePriceDate.如果有销售价格的话,这将是每天每件产品的最高记录。它可能最终会保存相同的记录重复了很多天。

  1. productID,SalePrice,FromDate,ToDate。当第一次找到产品的销售价格时,它会使用productID、SalePrice、FromDate、null ToDate插入记录。如果以后的日子没有变化,就什么也不做。当某一天检测到同一产品的新销售价格时,它会将ToDate更新到今天()-1.

哪条路更好?我认为第一种方法每天保存大量重复的数据。第二种方法是,如何将源数据与在售价格表进行比较,只插入新的,更新现有的ToDate,而忽略其余的?是否需要更多的资源来处理这样的数据?FromDate和ToDate是否会使将来的查询难以构建,或者执行速度较慢?我正在考虑的查询类型是,在给定的日期范围内,查找销售价格的第一个开始日期,在给定的日期范围内查找产品销售的总天数,确定产品在售或不在销售时的总天数,例如,给出日期范围。我对MySQL非常陌生,所以没有检查高级查询。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-08 16:10:58

我会采用第二种方法,因为它在节省内存和用例方面更有意义。现在针对你们的每一个问题:

问:如何将源数据与销售价格表进行比较,只插入新的,更新现有的ToDate,而忽略其余的?

答:您可以比较销售价格表和源数据之间的SalePrice (相同的productID ),其中可以从销售价格表( ToDate为null)中获得productID的最新记录。查看它的另一种方法是,您只从具有与销售价格表中的值不同的SalePrice值的源数据中查询产品,或者产品尚未插入到销售价格表中,而是在新的源数据中(新产品,附带日常数据)。

问:像这样处理数据需要更多的资源吗?答:是的,但这并不意味着你将花费大量的计算能力,这只是一些逻辑,而不是旧的insert into table select * from another_table。您将节省内存,因此必须进行权衡。当您使用SQL分析您的表时,就不必进行聚合(就像使用方法1一样),这样就节省了一些计算能力。

问: FromDate和ToDate是否会使将来的查询难以构建,或者执行速度较慢?答:假设您想在特定的日期( -> )获得产品的价格,productId = your_productID和your_desired_date介于DateFrom和DateTo之间,假设您想知道某些产品的销售价格随着时间的变化,productId = your_productID,等等on...So,这取决于您的SQL技巧,我认为这不会有那么困难。对于方法1,您将不得不进行聚合,而对于方法2,您将不得不更多地使用时态逻辑。

问:我正在考虑的查询类型是,在给定的日期范围内,找到第一个开始销售价格的日期,在给定的日期范围内查找产品的总销售天数,确定产品在售或不在销售的时间,例如,给出一个日期范围。

答:我认为如果您使用设计方法2,如果您的用例是要找到销售价格的第一个开始日期(对于第一种方法,您必须使用聚合函数MIN()),那么您的查询将更有性能。另外,如果您想要获得总天数(因为您使用了DATEDIFF(DateFrom,DateTo) ),那么查询的性能就会更好--如果您想要获得总天数,请参阅psevdo代码--请参阅MySQL文档中的一个函数,该函数查找日期之间的天数差异。如果您想知道某产品是否正在销售,或者不在日期范围内,那么方法2将比方法1更麻烦,但不是很多。您只需查看您的表中是否有日期范围内的产品记录,如果没有,则该产品不在销售中,否则该产品正在减价。

结论:我将采用方法2.

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63317330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档