私の仕事は、操作中に影響を受けなかったすべてのエンティティをデータベースから削除することです。2 つの列を持つ別のテーブルを作成しました。最初はテーブルの名前を再設定し、2 番目はそのテーブル内のレコードの ID です。
CREATE TABLE edited_entities (
table VARCHAR(50) not null,
id BIGINT(20) not null)
たとえば、テーブルがある場合
CREATE TABLE puppy(
id BIGINT(20) not null,
name VARCHAR(20) not null)
そしてその中のレコード
id | name
1 | Rex
このレコードを編集すると、次のデータが edit_entities に入れられます。
table | id
puppy | 1
次に、影響を受けていないエンティティ (edited_entities テーブルにない ID) をすべて削除する必要があり、次のようにします。
delete from puppy where id not in
(select ee.id from edited_entities ee where ee.table= 'puppy');
このような操作 (MySql) に最適なエンジンは何でしょうか? デフォルトのデータベース エンジンは InnoDB です。メモリ(ヒープ)について考えましたが、削除操作を高速化できるかどうかはわかりません。
必要な操作を最適化するにはどうすればよいか提案があれば、喜んでここにいたします。
子犬のテーブルに列を追加したくありません。