基于计数使用HeidiSQL删除记录

基于计数使用HeidiSQL删除记录,sql,duplicates,sql-delete,query-performance,mariadb-10.4,Sql,Duplicates,Sql Delete,Query Performance,Mariadb 10.4,我在一个表中意外地创建了大量500K+的错误记录。 该表将Face_ID作为唯一键,将Picture_ID作为外键。 我想删除所有记录,其中有大量记录链接到相同的Picture_ID值。 下面的查询工作得非常好,而且非常快: 按计数*大于1000的图片ID从面组中选择图片ID,计数* 我尝试了以下操作,但在执行20分钟后,查询仍在运行: 按计数大于1000的图片ID从面组中选择图片ID的面中删除 即使我将上面示例中的数字1000调整为只找到Picture_ID的3个值的值,每个值大约有1000条

我在一个表中意外地创建了大量500K+的错误记录。 该表将Face_ID作为唯一键,将Picture_ID作为外键。 我想删除所有记录,其中有大量记录链接到相同的Picture_ID值。 下面的查询工作得非常好,而且非常快:

按计数*大于1000的图片ID从面组中选择图片ID,计数*

我尝试了以下操作,但在执行20分钟后,查询仍在运行:

按计数大于1000的图片ID从面组中选择图片ID的面中删除

即使我将上面示例中的数字1000调整为只找到Picture_ID的3个值的值,每个值大约有1000条记录,查询仍然需要很长时间。 坦白地说,这让我害怕需要多长时间——这让我想知道当它完成时,我的数据库还剩下什么

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

我找到了一个答案:

删除 从一张脸 参加 按计数大于1000 b的图片ID从面组中选择图片ID 在a.Picture\u ID=b.Picture\u ID上


它能工作,而且很快

添加“显示创建表面”和“解释从面删除”的输出。。。deleteshow create table faces的其余部分:create table faces\u ID int11 NOT NULL AUTO\u INCREMENT、X1 int11 DEFAULT NULL、X2 int11 DEFAULT NULL、Y1 int11 DEFAULT NULL、Y2 int11 DEFAULT NULL、Person\u ID int11 DEFAULT NULL、Picture\u ID int11 NOT NULL、FilePath text DEFAULT NULL、主键faces\u ID、KEY FK\u people Person\u ID、,键FK_faces_pictures Picture_ID ENGINE=InnoDB AUTO_INCREMENT=706450 DEFAULT CHARSET=Latin1我不确定您不了解的部分。我正试图根据选择的图片ID从表面删除记录。Picture_ID是根据链接到faces表中1000多条记录的Picture_ID来选择的。您能显示解释请求的输出吗?编辑你的问题,并添加它,以显示出问题所在