大きなDBテーブルからアーカイブテーブルに行を挿入してから、挿入された行を削除しています。私のコードは次のとおりです。
-- 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列にインデックスがあります
私の問題は、ストアドプロシージャを試してみると、このテーブルの処理が停止しているように見えることです。
私は最も効率的な解決策がない可能性があることを理解しており、ストアドプロシージャを改善する方法についての批判や提案を聞きたいと思います。
ありがとう