gpt4 book ai didi

SQL 批量删除

转载 作者:行者123 更新时间:2023-12-01 02:59:06 26 4
gpt4 key购买 nike

我正在尝试缩小一些数据库,以便我的开发人员可以将它们加载到他们的本地机器上。我已经确定了几个保存历史数据(值(value)超过 10 年)的表,如果我删除超过 X 天的记录,这些表将大大减少整体数据库大小(50% 或更多)。

我正在使用的删除语句如下所示,但我的问题是,如何提高此删除语句的速度?数据库已经是简单的日志格式,但日志仍然随着删除语句而增长。有没有更好的日志记录方法?

我这样做会不会更好:

  • 将我想保留的数据从当前表复制到临时表中,
  • 截断主表,
  • 将数据从临时数据移回主数据,
  • 收缩日志,
  • 完成所有需要收缩的表后,收缩数据库。

  • 查询示例:
    DELETE FROM LoginAttempts WHERE DateAttempt <= GETDATE() - 30

    最佳答案

    TRUNCATECREATE AS SELECT比删除 快得多整体表,因为它们生成较少的重做日志记录。

    然而,它们是 DDL命令,并且在某些系统中无法回滚。

    然而,DELETE如果要删除的行很少,可能仍然会更快。

    如果要删除一半的行,那么很可能第一个选项会更快,至少在 Oracle .

    关于SQL 批量删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1531914/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com