2010-08-08 60 views
4

我有一张包含约3500万行的表格。每个具有大约35个整数值和一个时间值(最后更新) 该表具有两个索引 primary - 使用表列中的两个整数值 Secondary - 使用来自主键+另一个整数值的第一个整数。什么是删除旧记录的更快方法

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

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

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

有没有另一种方式更有效地做到这一点?

回答

8

它可能是更快地创建一个包含你想保留的行的新表,删除旧表,然后重命名新表

+0

好主意!我将在开发计算机上运行测试以了解它是如何工作的。 – Nir 2010-08-08 08:54:59

3

对于每周的缺失有关日期字段的索引会加快速度。

0

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

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

尽管管理混乱:)

相关问题