删除旧记录的更快捷方式是什么?

时间:2010-08-08 08:45:19

标签: mysql optimization delete-row

我有一张约有3500万行的表格。每个都有大约35个整数值和一个时间值(最后更新) 该表有两个索引 primary - 使用表列中的两个整数值 Secondary - 使用primary中的第一个整数+另一个整数值。

我想根据日期字段删除旧记录(大约2千万条记录)。

最快的方法是什么: 1.根据日期字段删除? 2.按日期创建另一个索引,然后按日期删除。

将有一次删除大部分数据,然后逐周删除更小的部分。

还有其他方法可以更有效地完成吗?

3 个答案:

答案 0 :(得分:8)

创建一个包含要保留的行的新表可能会更快,删除旧表然后重命名新表

答案 1 :(得分:3)

对于每周删除,日期字段上的索引会加快速度。

答案 2 :(得分:0)

最快(但不是最简单) - 我认为 - 是将您的记录分成多个 基于日期的表格,例如给定一周,然后在整个事情中为常规查询提供所有这些表的联合表(这样您的查询就不会改变)。您每周都会创建新表并重新定义联合表。

当您希望删除旧记录时,只需重新创建联合表以将旧表中的记录保留,然后删除那些记录(记得在删除之前截断,具体取决于您的文件系统)。这可能是通过MySQL实现目标的最快方式。

管理混乱:)