我正在尝试缩小一些数据库,以便我的开发人员可以将它们加载到他们的本地机器上。我已经确定了几个包含历史数据(价值 10 年以上)的表,如果我删除超过 X 天的记录,它们将显着减少整体数据库大小(50% 或更多)。
我正在使用的 delete 语句如下所示,但我的问题是,如何提高这个 delete 语句的速度?数据库已经采用简单的日志记录格式,但日志仍然随着删除语句而增长。有更好的记录方法吗?
我这样做会更好吗:
- 将我要保留的数据从当前表复制到临时表中,
- 截断主表,
- 将数据从 temp 移回主节点,
- 收缩日志,
- 完成所有需要收缩的表后收缩数据库。
查询示例:
DELETE FROM LoginAttempts WHERE DateAttempt <= GETDATE() - 30