今日の日付の30日前までにデータを必要とするMYSQLテーブルがある。今日の日付から数年後までのデータがあります。より高速な照会のために、私は古いレコードを検索する必要がないので、通常、古いレコードを削除します。しかし、分析のために必要な場合は、私はまだレコードのバックアップコピーを保持しています。元のテーブルはこれです:mysqlテーブルから古いレコードを削除するが、バックアップを保持する
CREATE TABLE featured_deal (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
fsa VARCHAR(10),
poster_id int(11),
dealid bigint(20),
bookedDate date,
createDate timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY `featured_unique`(fsa, bookedDate)
)
そして私は、この表のレプリカであるテーブルを作成する歴史と呼ばれる:挿入は上が起こるたび
CREATE TABLE featured_deal_history (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
fsa VARCHAR(10),
poster_id int(11),
dealid bigint(20),
bookedDate date,
createDate timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY `featured_unique`(fsa, bookedDate)
)
は、私は歴史の表を移入するトリガーを持っています元のテーブル:
CREATE TRIGGER `featured_to_history`
AFTER INSERT ON lst_enmasse_featured_deal
FOR EACH ROW
INSERT INTO lst_enmasse_featured_deal_history (fsa,poster_id,dealid,bookedDate,createDate)
VALUES (NEW.fsa,NEW.poster_id,NEW.dealid,NEW.bookedDate,NEW.createDate)
最後に、私はcronジョブやコマンドを使用して、テーブルをきれい:
DELETE * FROM featured_deal WHERE bookedDate < DATE_SUB(CURDATE(), INTERVAL 30 DAY)
上記のタスクを実行するより良い方法はありますか?私はMYSQLパーティションについて考えました。しかし、私は固定パーティションを持っていません。日付が変わるので、毎日2つの新しいパーティションが必要になります。
私は実際に目的に役立たなかったので、新しいIDを履歴テーブルから削除しました。 –