ターンベースのゲーム(PHPとMySQLを使用)のチャットを作成しています。このチャットでは、最新の30件のメッセージのみをMySQLデータベースに保存します。
現在、カウントが30を超えたときに最も古いメッセージを削除するために、3つのクエリを実行しています。
新しいチャットメッセージを新しい行として挿入します。
INSERT INTO chatMessages(userId、matchId、message、timestamp)VALUES("。$params ["userId "]。"、"。$ params ["matchId "]。"、'"。$params["message"]。" '、今())
データベースにメッセージが多すぎるかどうかを確認し、最も古いメッセージのIDを取得します。
SELECT COUNT(id)AS count、id AS oldestId FROM chatMessages WHERE matchId="。$params["matchId"]。" ORDER BY id ASC LIMIT 1
最も古いメッセージを削除する
DELETE FROM chatMessages WHERE id="。$oldestId
2つまたは1つの単一のクエリでこれを行う方法はありますか?サーバーにはかなりの量のトラフィックがあるため、パフォーマンスが重要です。