我有一个数据库,各个表中大约有8个字段是日期,如果它们即将或已经过期,则需要每天检查这些数据。
我想使用CRON Job来实现这一点,但请记住,数据库最终可能会有50,000行。运行检查所有日期的脚本很可能会超时。
我在考虑将搜索脚本分割成块。所以它将运行几千行然后停止。然后五分钟后从它离开的位置开始,通过查询数据库中存储上次完成位置的字段。一旦它遍历所有行就停止了。
但我不知道脚本是否明智甚至可能在5分钟内再次运行。
任何建议都将受到赞赏。
答案 0 :(得分:1)
您不必在整个表格上运行。您可以直接运行查询吗?
SELECT something FROM tbl_name WHERE NOW() >= date_col;
答案 1 :(得分:0)
使用mysql event scheduler来做到这一点 此代码将创建一个事件,该事件将每天自动执行一次,以从表中删除过时的记录:
DELIMITER //
CREATE EVENT myevent
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY
ON COMPLETION PRESERVE
DO BEGIN
DELETE FROM mytable WHERE col1<NOW();
DELETE FROM mytable WHERE col2<NOW();
DELETE FROM mytable WHERE col3<NOW();
DELETE FROM mytable WHERE col4<NOW();
DELETE FROM mytable WHERE col5<NOW();
DELETE FROM mytable WHERE col6<NOW();
DELETE FROM mytable WHERE col7<NOW();
DELETE FROM mytable WHERE col8<NOW();
END//
DELIMITER ;