MySQL使用LIMIT或WHERE删除记录

时间:2019-03-08 00:38:33

标签: mysql indexing delete-row

我正在尝试找到删除MySQL DB中数百万条记录的最佳方法。 我有一个表,其ID上有一个PK,在“日期”列上有一个索引,我的删除查询如下:

DELETE FROM table WHERE date < '<today - 6 months>';

它在从站上产生了很多延迟。

我有2个选择:

DELETE FROM table WHERE date < '<today - 6 months>' LIMIT 1000;

包括进一步的索引编制或使用PK进行删除。

我想听听您的意见。如果使用LIMIT不会改变工作量,或者使用PK(与LIMIT结合使用)更好。

1 个答案:

答案 0 :(得分:0)

删除大量行的最佳方法(尤其是在复制设置中)是通过PRIMARY KEY在1000行的数据块中遍历表。

有关详细信息,请参见this

如果这是一项重复任务,那么“时间序列” PARTITIONing会更好。 (尽管在您设置分区之前不会有帮助。)请参见this