MYSQL 订单分成 近3个月和3个月之前两种一般怎么做?

作者站长头像
站长
· 阅读数 5

把订单分成近3个月和3个月之前两种,是不是一般用两个表 t_order(近3个月订单) 和 t_order_old (3个月之前订单)两个表。

那这个是MYSQL可以自动按时间搞定还是说程序搞定?

我现在是 spting boot 用他的定定时任务来做?每天0点程序执行 service 方法,先把 t_order 里面3个月前数据复制到 t_order_old 里面(其实就是最后一天的数据),然后删除 t_order 3个月后的数据,还有order_id订单号关联的好几个表基本也这么做,我这样对不对?

回复
1个回答
avatar
test
2024-06-25
那这个是MYSQL可以自动按时间搞定还是说程序搞定?

都可以。如果还是按定时任务这样操作,建议使用INSERT INTO...SELECT...语句从新表里拿数据直接添加到老表里就可以了,不需要先复制过去再做删除,这样效率比较高,而且目标表中任何已存在的行都不会受影响,比较安全如果不是说非得拆分成两张表,可以考虑MySQL的分区表功能,可以按照时间范围对表进行分区。这样,虽然数据仍然存储在一个逻辑表中,但实际上的物理存储被分隔开了,可以在一定程度上提高查询效率,同时又不需要额外的定时任务来迁移数据。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容