我正在为回合制游戏(使用 PHP 和 MySQL)构建聊天,我只想将 30 条最新消息保存在 MySQL 数据库中。
目前,当计数超过 30 时,我正在执行 3 个查询以删除最旧的消息:
将新的聊天消息作为新行插入:
插入聊天消息(userId,matchId,message,timestamp)值(“.$params[“userId”].”,”.$params[“matchId”]。“,'”。$params[“message”]。” ',现在())
检查数据库中是否有太多消息,并获取最旧的 Id。
SELECT COUNT(id) AS count, id AS oldId FROM chatMessages WHERE matchId = ".$params["matchId"]." ORDER BY id ASC 限制 1
删除最旧的消息
DELETE FROM chatMessages WHERE id = ".$oldestId
有什么方法可以在 2 个甚至 1 个单个查询中执行此操作吗?我们的服务器上有很多流量,所以性能是关键。