【发布时间】:2019-06-07 18:41:45
【问题描述】:
在大约 170 万行的表上,我尝试删除重复的帖子:
delete a FROM comment a
INNER JOIN comment a2
WHERE a.id < a2.id
AND a.body = a2.body;
结果是:
Query OK, 35071 rows affected (5 hours 36 min 48.79 sec)
这发生在我几乎空闲的工作站上,Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz。
我想知道是否有一些技巧可以让这个删除操作更快?
【问题讨论】:
-
一次性删除它们不是一个好主意,尝试使用过滤子句进行增量删除,例如:使用
filer中的日期列 -
您的表格评论中有多少行? .. 你在 db 上只留下最后一条评论名称重复?
-
@Ven,请用示例查询详细说明。
-
@scaisEdge,正如我所说,大约有 170 万行。
-
@Milkyway 如果您有一列可以用于删除记录的表,我已经通过这种方式在生产中解决了这个问题。因为这不会导致日志文件增长问题,例如:
delete a from comment a inner join comment a2 on a.body = a2.body and a.datecolumn between '2018-01-06' and '2019-01-06'
标签: mysql sql sql-delete