我将大型数据库表中的行插入存档表,然后删除插入的行。我的代码如下:
-- insert here
insert into DEST_DB.dbo.ARCHIVE_TABLE
select SRC_DB.dbo.ORIG_TABLE.*
from SRC_DB.dbo.ORIG_TABLE
where SRC_DB.dbo.ORIG_TABLE.ORDER_ID
IN ( select #tmp_table.order_id from #tmp_table )
-- delete here
delete from SRC_DB.dbo.ORIG_TABLE
where SRC_DB.dbo.ORIG_TABLE.ORDER_ID
IN ( select #tmp_table.order_id from #tmp_table )
表的大小#tmp_table.order_id
当前设置为 10K 行,临时表将在循环中被填充和清除,这意味着它将用于我在每次循环迭代中的插入和删除操作。
UNIQUE UNCLUSTERED
我的 SRC_DB.dbo.ORIG_TABLE 的 ORDER_ID 列上有索引
我的问题是当我尝试我的存储过程时,它似乎在处理这个表时停止了。
我知道我可能没有最有效的解决方案,并希望听到有关如何改进我的存储过程的批评和建议。
谢谢