如何优化会员到期日期查询以提高效率?

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

用户充值会员 充值成功了就记录用户的会员结束日期。任务每天轮训是否到期了,但是我希望是比如2024-4-12月到期的 我提前一天扣就是2024-4-11 扣钱 现在的问题是我设计数据表查询的时候如何比较快,后面用户量太多了

CREATE TABLE `u` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `expire_time` timestamp NULL DEFAULT NULL COMMENT '有效期 有效期',
  `status` int(11) NOT NULL DEFAULT '0' COMMENT '是否订阅 0否 1是',
  PRIMARY KEY (`id`),
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8mb4;

我查询是status=1并且expire_time<当天时间-1

时间加索引

回复
1个回答
avatar
test
2024-06-19

增加12张检查表,分别记录1~12月到期会员信息,每天检查时进需要遍历筛选总量为当月的数据,续费就剔除这个数据并挪到下一个月表,如果自动续费是一年,就单纯更新时间为一年。

当然,以上方案你可以根据实际的业务情况缩容,比如以季度、半年或者奇偶月份来划分也可以,这么做可以使得你每次检查筛选的数据量相比于全量用户要少

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