ホームページ > データベース > mysql チュートリアル > SQL Server 2008 は bcp と同様の一括削除機能を提供しますか?

SQL Server 2008 は bcp と同様の一括削除機能を提供しますか?

Mary-Kate Olsen
リリース: 2025-01-02 21:28:40
オリジナル
592 人が閲覧しました

Does SQL Server 2008 Offer a Bulk Delete Feature Similar to bcp?

SQL Server 2008 での一括削除

SQL Server テーブルに対して一括削除操作を実行しているときに、広範囲にわたる一括削除操作と同様の一括削除操作を実行する方法があるのではないかと疑問に思うことがあります。挿入操作に使用される効率的な一括コピー (bcp) ツール。この疑問は、SQL Server に専用の一括削除機能がないために生じます。

残念ながら、答えは否定的です。 SQL Server は、データを一括削除するための bcp のような直接的なメカニズムを提供しません。 WHERE 句を使用して削除操作の影響を受ける行を制限する場合は、フィルタリングを行わずにテーブル内のすべての行を削除する TRUNCATE コマンドを使用することはできません。

代替アプローチ

一括削除ユーティリティがない場合は、別の方法がいくつかあります。 take:

  1. バッチ削除:

    • DELETE TOP (xxx) 構文を使用して、削除操作を小さなバッチに分割します。これにより、各バッチで削除される行数を制御できます。
    • このアプローチは専用の一括削除よりも時間がかかりますが、システム リソースを使い果たすことなく大規模な削除を処理できます。
  2. テーブルSwap:

    • 保持する行を保持する一時テーブルを作成します。
    • TRUNCATE コマンドを使用して、元のテーブルからすべての行を削除します。
    • 保存された行を一時テーブルから元のテーブルに挿入して戻します。
    • この方法は、次の場合に効率的です。大部分の行を削除しますが、一時テーブルを収容するのに十分なディスク領域が必要です。

例:

-- Batched Deletes
SELECT 'Starting' --sets @@ROWCOUNT
WHILE @@ROWCOUNT <> 0
    DELETE TOP (1000) MyTable WHERE ...

-- Table Swap
SELECT col1, col2, ... INTO #Holdingtable
       FROM MyTable WHERE ..opposite condition..
TRUNCATE TABLE MyTable
INSERT MyTable (col1, col2, ...)
       SELECT col1, col2, ... FROM #Holdingtable
ログイン後にコピー

これらの代替アプローチでは、専用の一括削除機能と同じパフォーマンスが常に提供されるわけではないことに注意してください。ただし、WHERE 句の使用が必要な場合には、大規模な削除操作に実行可能なオプションが提供されます。

以上がSQL Server 2008 は bcp と同様の一括削除機能を提供しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート