0

我不小心在一个表中创建了大量(500K+)不正确的记录。该表将 Face_ID 作为唯一键,将 Picture_ID 作为外键。我想删除与 Picture_ID 的相同值相关联的大量记录的所有记录。以下查询完美且非常快速地运行:

Select Picture_ID, COUNT(*) From faces Group BY Picture_ID Having COUNT(*) > 1000

我尝试了以下方法,但事件在执行 20 分钟后,查询仍在运行:

delete from faces where Picture_ID IN (Select Picture_ID From faces Group BY Picture_ID Having COUNT(*) > 1000)

即使我将数字(上例中为 1000)调整为仅找到 3 个 Picture_ID 值的值,每个值大约有 1000 条记录,查询仍然需要很长时间。(坦率地说,这让我害怕需要多长时间 - 让我想知道我的数据库完成后会剩下什么!)

在 Windows 10 上使用 HeidiSQL 和 MariaDB 进行编码的最有效方法是什么。

4

1 回答 1

0

我找到了答案:

DELETE a from faces a JOIN (Select Picture_ID From faces Group BY Picture_ID Being COUNT(*) > 1000) b ON a.Picture_ID = b.Picture_ID

它有效,而且速度很快!

于 2020-10-15T06:49:33.983 回答