MySQL使用LIMIT或使用WHERE删除记录

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

我正在努力寻找删除MySQL数据库中数百万条记录的最佳方法。我有一个带ID的PK表和'date'列的索引,我的删除查询如下:

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

它在奴隶身上产生了很多延迟。

我有两个选择:

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

要么

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

我想听听你的意见。如果使用LIMIT不会改变工作负载或使用PK(与LIMIT结合使用)更好。

mysql indexing delete-row
1个回答
0
投票

删除大量行的最佳方法,特别是在复制设置中,是通过1000行的块中的PRIMARY KEY遍历表。

有关详细信息,请参阅this

如果这是一个反复出现的任务,那么'时间序列'PARTITIONing会更好。 (虽然在设置分区之前它无济于事。)请参阅this

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