我有一个大约 3500 万行的表。每个都有大约 35 个整数值和一个时间值(最后更新) 该表有两个索引主要 - 使用表列中的两个整数值 辅助 - 使用主要的第一个整数 + 另一个整数值。
我想根据日期字段删除旧记录(大约 2000 万条)。
最快的方法是什么: 1.根据日期字段按原样删除?2. 按日期创建另一个索引,然后按日期删除。
将一次性删除大部分数据,然后每周增量删除更小的部分。
还有其他方法可以更有效地做到这一点吗?
我有一个大约 3500 万行的表。每个都有大约 35 个整数值和一个时间值(最后更新) 该表有两个索引主要 - 使用表列中的两个整数值 辅助 - 使用主要的第一个整数 + 另一个整数值。
我想根据日期字段删除旧记录(大约 2000 万条)。
最快的方法是什么: 1.根据日期字段按原样删除?2. 按日期创建另一个索引,然后按日期删除。
将一次性删除大部分数据,然后每周增量删除更小的部分。
还有其他方法可以更有效地做到这一点吗?
创建一个包含要保留的行的新表,删除旧表然后重命名新表可能会更快
对于每周删除,日期字段上的索引会加快速度。
最快(但不是最简单的) - 我认为 - 是根据日期(例如给定周)将您的记录分割成多个表,然后将所有这些表的联合表用于整个事情的常规查询(所以您的查询将不变)。您每周都会创建新表并重新定义联合表。
当您希望删除旧记录时,您只需重新创建联合表以保留旧表中的记录,然后删除那些被删除的记录(请记住在删除之前截断,具体取决于您的文件系统)。这可能是使用 MySQL 实现目标的最快方式。
不过要管理的一团糟:)