例えば一ヶ月以上変更されていないデータは消したいと思ったときのSQL、MySQLの。

 MySQL AB :: MySQL 4.1 リファレンスマニュアル :: 6.3.4 日付と時刻関数

 何だかドリホのMySQLサーバって感じ悪くって、ちょいちょい反応なかったりエラー吐いたりしていて、まぁ、それは私は作っているWebアプリにも責任はあるかなって気もするのだけど、とりあえずバカみたいに肥大化しているテーブルを抱えさせているのも問題だよなって、暫く変更されていない行は消しちゃうかって作業してみた成果。

 更新時などにタイムスタンプを記録しているdatetime型のカラムを保持している事が前提として、その値が一ヶ月前の日付よりも古かったら削除するSQLは、

delete from “テーブル名” where “タイムスタンプのカラム” < SUBDATE(CURDATE(), INTERVAL 1 MONTH);

 と記述できる。

 これを任意のファイル名で保存して、

mysql -u “ユーザ名” -p“パスワード” -h “ホスト名” “データベース名” < “SQLファイル名” > /dev/null

 とするとコマンドラインから実行可能なので、cronなどで自動実行させると良いかも知れない。