私の現在のプロジェクトでは、毎日1時間ごとにサーバーにpingを実行しています。時間がたつにつれて、これは大量のデータであり、管理者(PHP)は日付を選択してその日の前にすべてのデータを削除したいと思います。MySQL:日付ごとに1つのデータを選択してください
など。選択された日付が2/4/16だった場合、日付の2/4/16より前から1日あたり1レコードを削除します。
問題のデータベーステーブルの構造は次のとおりです。
server_status:
id int(11)
server_id int(11)
time_checked datetime
status char(1)
私は、MySQLの文が、私はこれを達成する必要があるだろうかと思った - 私は、Web周りを見て持っていた、と私はそのI見ることができます新しいテーブルを作成し、テーブルを削除して置き換える必要があるかもしれませんが、DBを長時間ブロックするような応答があるようです。それは私が混乱している選択ステートメントの詳細です - 私は前の日付からデータを選択する方法を理解していますが、1)1日1データのみを選択し、2)残りを削除する方法を知らない。
ありがとうございました!
1日に1つのレコードを保存するための要件はありますか? –
どのレコードが(私に与えられた要求に従って)保管されているかは関係ありません。私が知っている限り、その日の最初/最後のレコードと同じくらいシンプルなものかもしれません。 – dplatt
あなたはどのように達成するかは関係ありません。 1つのクエリで削除するか、1つのクエリ以外の各行を選択して削除します。どちらの場合も、削除のたびに遅延が発生するまでテーブルはロックされますが、これはあなたのケースでは実行できません。 –