从数据库中删除未引用的数据

时间:2016-08-29 17:37:05

标签: mysql sql

由于设计不好,我必须清理数据库。那里的数据没有连接"正确(未设置外键) 因此,我想删除所有未引用的数据。 我创建了一个临时表temp1,并插入了与主表Entity_ID无关的所有entity。下一步是,我想通过以下查询从entityisactive中删除所有错误数据:

Delete from db1.entityisactive where db1.entityisactive.Entity_ID IN
(
Select db1.temp1.Entity_ID from db1.temp1 
)

问题是,当我这样做时Select db1.temp1.Entity_ID from db1.temp1 where Entity_ID = 42

,我得到连接超时

我想要删除entityisactive entityisactive.Entity_ID = temp1.Entity_ID

中的所有条目

如何加快SQL查询?或者我的推理错误在哪里?

1 个答案:

答案 0 :(得分:0)

我建议使用显式join然后定义索引。代码看起来像:

Delete eia
    from db1.entityisactive eia join
         db1.temp1 t
         on eia.Entity_ID = t.Entity_ID ;

然后,此查询需要temp1(Entity_Id)entityisactive(Entity_Id)上的索引。两个索引都不是必需的,第二个可能有更好的性能。