如何解决如何使此 SQL TRUNCATE 更安全?
我们有一个 Azure sql
数据库表,其中包含数百万行,但空间不足。已选择删除部分内容,我的任务是编写此脚本。
我选择的过程是将我们想要保留的数据(数量相对较少,但仍然是 1000 行中的 100 行)复制到临时表中,truncate
主表,然后重新插入将临时表内容返回到主表。
像这样:
SELECT * INTO tmp FROM source
TruncATE TABLE source
INSERT INTO source (<fields>) SELECT <fields> FROM tmp
但是,我想确保我们不会丢失在可能很长的 source
期间插入到 SELECT * INTO
表中的数据。
有什么流程可以确保没有数据丢失吗?
我曾考虑将最新的主键存储在一个变量中,然后在 SELECT * INTO
后面加上另一个,只取主键高于该值的行,我认为这样复制速度会更快。这个假设正确吗?
另一种选择是简单地手动运行一个脚本,该脚本缓慢但肯定地只是DELETEs
我们不需要的行。虽然这个过程会随着行被删除而加快,但我想不出办法让它更快。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。