2012-01-19 13 views
1

私のアプリケーションはテーブルcoreに書き込みます。この名前は不変です。それは非常に大きく(何百万行も)得られており、そのサイズによってINSERTが必要以上に遅くなります。私の解決策は、coreに1週間のデータしか保持しないことです。だから私はテーブルcore_archiveを構築して、予定された間隔で1週間以上経過したものをすべて入れました。MySqlテーブルを最適化するための外部キー制約の問題を解決する方法

スケジュール間隔でスクリプトはすべての新しい値をcoreに取得し、それらを操作して3番目のテーブルcore_detailsに配置します。スキーマは、core_detailsには、PKに対する外部キー制約がcoreにあります。

私の問題は、この外部キー制約の(core_detail間とcore)、私はcoreから任意の行を削除することはできませんということです。だから何をすべきか?

オプション:

  1. core_archiveで古い外部キー制約を指すようにALTER TABLEを実行します。しかし、実際には大規模な本番データベースでは安全に実行できません。
  2. ? [私は、任意の考えStackO ...他の実行可能なアイデアを持っていない?]

答えて

2

あなたにもcore_details_archiveテーブルを作成し、アーカイブするようにスケジュールされているcoreの行にcore_archiveそのポイントの行をアーカイブする必要があります。データ構造によっては、このアプローチを任意の数のテーブルに拡張する必要があります。

+0

これまでのところ、これは唯一の選択肢のようです。提案ありがとう。 – kmarks2

関連する問題