前端:Reactjs 后端:Nodejs + Express 数据库:Mysql工作台 托管:Linode
现在我有一个计划每 2 秒运行一次的事件来更新状态列。不过,我担心该事件可能会影响服务器的性能。因此,我想听听大家对我应该做什么的建议。
我想根据数据库中的开始日期和结束日期数据更新状态列。我用于 Mysql 事件的 SQL 代码是:
CREATE EVENT update_status
ON SCHEDULE EVERY 2 SECOND
DO
UPDATE `practiceme`.`events` as e
set `e`.`status` =
CASE
WHEN CURRENT_DATE > `e`.`eventEnd` THEN 'Past'
WHEN CURRENT_DATE < `e`.`eventStart` THEN 'Upcoming'
WHEN CURRENT_DATE > `e`.`eventStart` AND CURRENT_DATE < `e`.`eventEnd` THEN 'Ongoing'
ELSE `status`
END
我的数据库表“事件”存储开始和结束日期。
最佳答案
您可以按需查询状态,而不是用更新轰炸数据库。事实上,您甚至不需要存储状态:
SELECT *,
CASE
WHEN CURRENT_DATE > `e`.`eventEnd` THEN 'Past'
WHEN CURRENT_DATE < `e`.`eventStart` THEN 'Upcoming'
ELSE 'Ongoing'
END AS `status`
FROM `practiceme`.`events` e
-- Add a where caluse depending on what you need to query
关于mysql - 有没有比使用 MySQL Schedule events 更好的方法来更新数据库表中的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74963769/