4

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

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

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

将一次性删除大部分数据,然后每周增量删除更小的部分。

还有其他方法可以更有效地做到这一点吗?

4

3 回答 3

8

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

于 2010-08-08T08:53:43.330 回答
3

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

于 2010-08-08T09:18:52.957 回答
0

最快(但不是最简单的) - 我认为 - 是根据日期(例如给定周)将您的记录分割成多个表,然后将所有这些表的联合表用于整个事情的常规查询(所以您的查询将不变)。您每周都会创建新表并重新定义联合表。

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

不过要管理的一团糟:)

于 2013-05-16T09:06:01.130 回答