【问题标题】:What is the faster way to delete old records删除旧记录的更快方法是什么
【发布时间】:2015-07-09 18:56:30
【问题描述】:

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

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

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

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

还有其他更有效的方法吗?

【问题讨论】:

    标签: mysql optimization delete-row


    【解决方案1】:

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

    【讨论】:

    • 好主意!我将在开发计算机上运行测试,看看它是如何工作的。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      最快(但不是最简单的)——我认为——是把你的记录分成多个 基于日期的表格,例如给定一周,然后有一个所有这些表的联合表,用于整个事物的常规查询(因此您的查询不会改变)。您每周都会创建新表并重新定义联合表。

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

      虽然一团糟:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-02
        • 1970-01-01
        • 1970-01-01
        • 2016-09-29
        • 2019-10-17
        • 2012-08-04
        相关资源
        最近更新 更多