SQL Server 2008 のバッチ削除の最適化
SQL Server では、一括コピー (bcp) のような一括操作により、効率的なデータ操作手法が提供されます。ただし、同様の一括削除機能が利用できるかどうかという疑問が生じます。
クエリ:
SQL Server での一括削除の解決策はありますか?
TRUNCATE は選択的削除には使用できないため、WHERE 句が必要になります。データを一括削除するための bcp の代替手段はありますか?
答え:
いいえ、SQL Server は特殊な一括削除操作を提供しません。ただし、バッチ削除を最適化する方法はいくつかあります。
@@ROWCOUNT を使用したバッチ削除:
SELECT 'Starting' --sets @@ROWCOUNT WHILE @@ROWCOUNT <> 0 DELETE TOP (xxx) MyTable WHERE ...
このクエリは、'xxx' のバッチで DELETE ステートメントを実行します。
Truncateおよび挿入メソッド:
SELECT col1, col2, ... INTO #Holdingtable FROM MyTable WHERE ..opposite condition.. TRUNCATE TABLE MyTable INSERT MyTable (col1, col2, ...) SELECT col1, col2, ... FROM #Holdingtable
この手法は、高い割合の行を削除する必要がある場合に効果的です。保持する行を含む一時テーブルを作成し、元のテーブルを切り捨て、保持した行をテーブルに挿入し直します。
以上がSQL Server 2008 でバッチ削除を最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。