加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL MOVE记录到另一个表

发布时间:2020-12-12 06:44:53 所属栏目:MsSql教程 来源:网络整理
导读:我有许多函数可以将记录从一个表移动到另一个表(通常用于存档数据的形式),并且想知道是否存在执行此操作的“最佳实践”,或者是一种比我目前使用的更有效的方法. 目前,我正在运行如下: INSERT INTO archive_tableSELECT [ROWID],[COL1],[COL2]FROM live_table
我有许多函数可以将记录从一个表移动到另一个表(通常用于存档数据的形式),并且想知道是否存在执行此操作的“最佳实践”,或者是一种比我目前使用的更有效的方法.

目前,我正在运行如下:

INSERT INTO archive_table
SELECT [ROWID],[COL1],[COL2]
FROM live_table
WHERE <criteria>

DELETE FROM live_table
WHERE [ROWID] IN
(
   SELECT [ROWID] FROM archive_table
)

这也在SQL性能软件上发出警告,该查询可能导致索引抑制和性能下降;由于执行了SCAN,而不是SEEK.

值得补充的是,archive_table是live_table的精确副本,除了我们已经从[ROWID]列中删除了标识和主键,并且该表未在“实时”环境中使用,除了具有插入旧数据,如上所述.

[编辑]

似乎Alex的答案为此提供了一个非常简单的解决方案;关于使用触发器的注释不能解决此实例中的问题,因为事件发生在几天之后,并且标准取决于该时间段内的事件.

DELETE 
FROM live_table 
OUTPUT DELETED.* INTO archive_table
WHERE <criteria>

解决方法

如果您必须将大量记录从一个表移动到另一个表,我建议您检查是否可以对“活动表”进行分区.每次,您将数据从一个(或多个)分区复制到“实现表”并删除这些分区.它将比从“在线”表中删除记录快得多.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读