我的任务是从数据库中删除在操作过程中不受影响的所有实体。我创建了一个单独的表,它有两列,第一个表示表的名称,第二个表是该表中记录的ID。选择Mysql引擎处理大型“类型值”表
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。我想过内存(堆),但我不知道它是否可以加快删除操作。
如果您有建议,我该如何优化所需的操作,我会很高兴在这里。
我不想在小狗表中添加额外的列。
不同的varchar大小不是故意的我猜? – 2011-01-25 11:54:35