如何优化查询以删除200万个项目的重复项

问题描述 投票:0回答:2

晚上好,

这是我的查询,应该从表中删除重复项。如何针对两百万条记录进行优化?

DELETE p1 
FROM wp_ads_platform_users p1 
INNER JOIN wp_ads_platform_users p2 
WHERE p1.id < p2.id 
  AND p1.number = p2.number

感谢您的帮助。

mysql sql
2个回答
1
投票
DELETE
FROM wp_ads_platform_users p1 
WHERE EXISTS ( SELECT NULL
               FROM wp_ads_platform_users p2 
               WHERE p1.number = p2.number
                 AND p1.id < p2.id )

wp_ads_platform_users (number, id)的索引必须改善。


0
投票

在MySQL中,您可以预先聚合:

DELETE p
    FROM wp_ads_platform_users p JOIN
         (SELECT number, MAX(id) as max_id
          FROM wp_ads_platform_users p2
          GROUP BY number
         ) pp
         ON p.number = pp.number
    WHERE p.id < pp.max_id;

也就是说,删除200万行需要时间。您可能想使用查询来重新创建表。

© www.soinside.com 2019 - 2024. All rights reserved.