SQL Server 2008 での効率的な一括削除
データベース管理では、効率的なデータ削除の必要性が頻繁に発生します。 SQL Server には標準の DELETE ステートメントが用意されていますが、大規模なデータセットの場合は時間がかかる可能性があります。この質問では、SQL Server が一括 DELETE 操作に一括コピー (bcp) の代替手段を提供しているかどうかを検討します。
TRUNCATE は使用できません。代わりに WHERE を使用してください
提示されたクエリSQL Server での一括 DELETE の解決策があるかどうかを尋ねます。問題は、削除は WHERE 句で制限する必要があり、TRUNCATE が不適切なオプションになることです。
DELETE に相当する一括コピーはありません
残念ながら、一括コピーはありませんSQL Server の DELETE 操作に相当する copy。 WHERE 句を含む DELETE ステートメントは、標準 SQL クエリとして実行する必要があります。
スケーラビリティのためのバッチ DELETE
大規模なデータセットの場合は、バッチ DELETE 操作を検討してください。これらには、以下に示すように、DELETE ステートメントを小さなバッチに分割することが含まれます。
SELECT 'Starting' --sets @@ROWCOUNT WHILE @@ROWCOUNT <> 0 DELETE TOP (xxx) MyTable WHERE ...
高率の削除のための代替方法
大部分の行を削除する場合、別の方法の方が効率的である可能性があります:
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 での一括削除のための、標準の DELETE ステートメントのより高速な代替手段はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。