优化定时任务MySQL数据库超时问题,慎用id主键
实习过程中遇到了一个定时任务,随着数据的增加,因SQL超时导致任务失败……背景介绍:
任务表索引情况:自增主键id、索引create_time。定时任务功能:每天将表中的信息状态刷新,例:将时间大于2021.11.1且未过期的任务置为过期。因为根据时间顺序插入数据,因此可认为数据库前半部分任务状态均为已过期;后半部分均为未过期。
原SQL简单粗暴,从id > 0开始,查找到前100条满足条件的记录,然后更新状态,记录最后一条的id;再接着上次查询得到的id查下一百条。
SELECT
*
FROM
mission_info
WHERE
id > 0
AND create_time > '2021-11-01'
AND expire_status =</