Mysql删除重复数据:百万级别数据

一:Mysql删除重复数据

1.数据量小时:

根据字段对数据进行分组,查询出所有分组的最小ID(即要保留的不重复数据)
将查询出来的数据(所有不重复的数据)存放到临时表中
从原来的表中删除ID不在临时表中的重复数据

DELETE FROM SZ_Building WHERE id NOT IN (
  SELECT t.min_id FROM (
    SELECT MIN(id) AS min_id FROM SZ_Building GROUP BY BLDG_NO
  ) t
);

2.数据量大时:百万级以上时 :减新表存不重复的最小id,id列加索引;删除需要去重的表根据不在id不在新表的所有id中,
(1):先把min(id)存到临时表(SZ_Building_id)

create table SZ_Building_id
SELECT MIN(id) AS id FROM SZ_Building GROUP BY BLDG_NO
;

(2):给临时表的id设置成主键或者创建索引(加快后面的查询速度)

alter table add index ind_xxName(字段名:如ID);

(3):删除id不在临时表的数据。

delete from SZ_Building where id not in(
  select id from SZ_Building_id
)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL删除百万数据中的重复项并保留一条的效率取决于多个因素。以下是一些可能影响效率的因素: 1. 索引的使用:如果表中存在合适的索引,删除重复项的效率会更高。可以使用唯一索引或主键索引来确保数据的唯一性。 2. 数据库服务器的硬件性能:较高配置的服务器通常可以更快地处理大量数据操作。 3. 语句的优化:使用正确的 SQL 语句,如使用 WHERE 子句和 LIMIT 子句,可以减少查询的范围,提高效率。 4. 表的结构:表的大小和复杂性会影响删除操作的效率。如果表中存在许多其他索引或触发器,可能会严重影响性能。 5. 事务处理:在删除大量数据时,使用事务可以提高效率。通过合理地使用事务并批量处理数据,可以减少数据库锁定和日志写入的次数,从而提高删除操作的效率。 然而,在百万级别数据量中删除重复项可能是一个耗时的操作,因为需要扫描整个表并对每个重复项进行删除。对于大型数据集,可能需要更多的时间来完成操作。为了提高效率,可以考虑以下方法: 1. 创建一个临时表:将原始表中的数据复制到一个新的临时表中,并设置适当的索引。然后,通过使用 GROUP BY 子句和聚合函数,选择要保留的唯一记录。最后,将临时表的数据插入到原始表中,完成删除重复项的操作。 2. 使用临时存储过程:创建一个临时存储过程,通过使用游标和循环来逐行处理数据。在处理每一行时,检查是否有重复项,并删除多余的记录。 在实际应用中,根据具体需求和数据量的大小,可以进行适当的优化和测试,以找到最有效的方法来删除重复项并保留一条。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值