我有一个包含大约 10 个字段的表来存储客户的 GPS 信息。随着时间的推移,随着我们添加更多客户,该表已增长到约 1400 万行。当 GPS 数据进入服务时,不断地将一行插入表中。 90% 的数据不相关,即客户不关心车辆 3 个月前在哪里,但最新的数据用于生成跟踪报告。我的目标是编写一条 sql 来清除一个月以上的数据。
这是我的问题,我不能使用 TRUNCATE TABLE 因为我会失去一切? 昨天我写了一个带有where子句的删除表语句。当我在测试系统上运行它时,它锁定了我的表,并且模拟 GPS 插入间歇性失败。此外,我的事务日志在尝试记录每次删除时增长到了 6GB 以上。
我的第一个想法是从最旧的数据开始一次删除一点数据,但我想知道是否有更好的方法。
最佳答案
我的2美分:
如果您使用的是SQL 2005及以上版本,您可以考虑根据日期字段对表进行分区,这样在删除旧记录时表就不会被锁定。
也许,如果你处于做dba决策的位置,你可以暂时将你的日志模型改为Simple,这样它就不会增长太快,它仍然会增长,但日志不会太详细.
关于sql - 从大表中删除数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/858800/