由于设计不好,我必须清理数据库。那里的数据没有连接"正确(未设置外键)
因此,我想删除所有未引用的数据。
我创建了一个临时表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查询?或者我的推理错误在哪里?
答案 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)
上的索引。两个索引都不是必需的,第二个可能有更好的性能。