mysql - 有没有比使用 MySQL Schedule events 更好的方法来更新数据库表中的列?

标签 mysql node.js performance express scheduled-tasks

前端: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

我的数据库表“事件”存储开始和结束日期。

Database table

最佳答案

您可以按需查询状态,而不是用更新轰炸数据库。事实上,您甚至不需要存储状态:

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/

相关文章:

php - 如何在不是很 "Testy"的环境中使用 TDD

mysql - 为什么只有部分信息上传到数据库?

javascript - 无法缩小此文件中的代码

node.js - 为什么 Debian/Ubuntu 上只能使用过时的 NPM 版本?

python - 使用 numpy 计算成对互信息的最佳方法

mysql - 在单个查询中按总和和总和分组

php - 搜索脚本分页不起作用

node.js - 尝试在 linux 上运行 npm run build 时,NPM 给出 ELILIFECYCLE 错误

c# - 变量名称长度对 C# 性能有影响吗?

针对 PostgreSQL 8.4.6 的 java.sql.Connection 测试