sql server数据定时迁移
把数据定时的从一个表迁移到另外一个表,(先查询、插入后删除)
比如有两个表A、B。
每天产生的新数据都存入A,但是时间久了之后A的数据积累了很多,效率降低很大。现在创建新表B,每天执行存储过程把A表中的六个月之前的数据迁入B表中。现在我写的存储过程类似与下面的代码,但是这么写相当于执行了两遍,不知道大家有没有什么效率比较高的方法,谢谢!
if OBJECT_ID ( 'A', 'P' ) IS NOT NULL
DROP A
go
CREATE PROCEDURE A
AS BEGIN
INSERT INTO B (ID,,,,, )
SELECT ID, ,,,,
FROM A
WHERE DATEDIFF(MONTH, A.time, GETDATE()) > 6;
END
BEGIN
DELETE FROM A
WHERE DATEDIFF(MONTH, A.TIME, GETDATE()) > 6;
END
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
通过delete的output子句直接输出到B表中,这样就只要对A表访问一次,然后将where条件 A.TIME <= dateadd(month , -6 , getdate()) , 如果A.time上存在索引的话这样可以充分利用都索引,而将A.time放在表达式中将没办法充分利用到对应的索引