【发布时间】:2016-08-29 17:37:05
【问题描述】:
由于设计不好,我必须清理数据库。那里的数据未正确“连接”(未设置外键)
因此,我想删除所有未引用的数据。
我创建了一个连接临时表temp1 并插入了所有与主表entity 没有连接的Entity_ID。下一步是,我想通过以下查询从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
我想要做的是删除entityisactiveentityisactive.Entity_ID = temp1.Entity_ID中的所有条目
如何加快 SQL 查询的速度?或者我的推理错误在哪里?
【问题讨论】:
-
您可以创建索引并使用 NOT IN 但不是 NOT IN 会非常危险
-
尝试限制内部查询的结果数量,然后多次运行直到它什么都不删除:
Select db1.temp1.Entity_ID from db1.temp1 LIMIT 1000 -
@Drew OP 没有询问
NOT IN -
@alfasin 我警告使用它