我的任务是从数据库中删除操作期间未受影响的所有实体。我创建了一个单独的表,它有两列,第一个是表名,第二个是该表中记录的 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
如果我编辑这条记录,我会将以下数据放入edited_entities:
table | id
puppy | 1
然后我需要删除所有未受影响的实体(其中 id 不在edited_entities 表中)并且我执行以下操作:
delete from puppy where id not in
(select ee.id from edited_entities ee where ee.table= 'puppy');
我想知道这种操作(MySql)的最佳引擎是什么?默认的数据库引擎是 InnoDB。我考虑过内存(堆),但我不确定它是否可以加快删除操作。
如果您有建议如何优化所需的操作,我将很高兴在这里。
我不想在小狗表中添加额外的列。