Delete from T1 where T1.ID in (select ID from T2)
このクエリを考えてみT1とT2の両方は、レコードの数百万人のために大規模なテーブルです。
T1は「ライブ」テーブルであり、T2は「アーカイブ」テーブルです。 T1からT2へレコードをコピーした後、T1からレコードをクリアします。 T1は多くのインデックスで最適化されて読み込まれます。
この操作を効率的に実行するにはどうすればよいですか?
私は.net環境ですので、コードベースのソリューションも動作します。
IN(SELECT)とEXISTSのクエリプランをチェックしました。実行時に違いがありますか? –
実行時間は同じですが、今後データを追加すると実行計画が変更される可能性があります。私の経験(そして私がオンラインで読んだもの)から、選択の順序はEXISTS、次にINNER JOIN、INです。バッチで更新する場合、どのメソッドを使用するかは実際問題ではありません。 – Anton