ホームページ > データベース > mysql チュートリアル > SQL Server 2008 での一括削除のための、標準の DELETE ステートメントのより高速な代替手段はありますか?

SQL Server 2008 での一括削除のための、標準の DELETE ステートメントのより高速な代替手段はありますか?

Susan Sarandon
リリース: 2025-01-03 10:29:43
オリジナル
828 人が閲覧しました

Is There a Faster Alternative to Standard DELETE Statements for Bulk Deletion in SQL Server 2008?

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 サイトの他の関連記事を参照してください。

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