根据计数使用HeidiSQL删除记录

问题描述

我不小心在一个表中创建了大量(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)调整为仅找到Picture_ID的3个值(每个具有大约1000条记录)的值,查询仍然花费很长时间。 (坦白说,这让我感到震惊,花费了多长时间-让我想知道数据库完成后还会剩下什么!)

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

解决方法

我找到了答案:

删除一个 从脸上 加入 (从具有COUNT(*)> 1000的BY BY Picture_ID的脸部组中选择Picture_ID)b 开启a.Picture_ID = b.Picture_ID

它有效,而且速度很快!