ホームページ > データベース > mysql チュートリアル > IDごとにデータベースから何百万行もの行を効率的に削除する方法は?

IDごとにデータベースから何百万行もの行を効率的に削除する方法は?

Patricia Arquette
リリース: 2025-01-24 11:42:15
オリジナル
659 人が閲覧しました

How to Efficiently Delete Millions of Rows from a Database by ID?

id

に基づいて数百万の行を削除するための高性能戦略

何百万ものデータベース行を削除することは、非常に時間がかかる場合があります。このガイドは、IDを使用してこれらの行を効率的に削除するための最適な方法を詳述しています。

主要な最適化手法

  • インデックス管理:インデックスがクエリ速度を強化する一方で、質量の削除を遅くすることができます。 削除前にインデックスを一時的に無効またはドロップすることを検討し、その後それらを再構築することを検討してください。
  • 制約処理:
  • トリガーと外部キーの制約は、削除性能に大きな影響を与える可能性があります。 これらの制約を一時的に無効または削除して、プロセスを加速します。 削除が完了したら、それらを再度に再度許可することを忘れないでください。
  • データベースの最適化:
  • およびコマンドは、データベースメタデータを維持し、クエリ効率を改善するのに役立ちます。削除操作の前にこれらを実行すると、パフォーマンスが大幅に向上する可能性があります。 VACUUM一時的なテーブルアプローチ:ANALYZE効率が向上するには、保持する行を含む一時テーブルを作成します。 メインテーブルから直接削除してから、一時テーブルからのデータで再農業を再現します。これにより、削除のカスケードが回避され、プロセスが簡素化されます
  • コードの例

一時テーブルを使用する

  • 外国の重要な考慮事項を伴う直接的な削除:

    <code class="language-sql">  -- Create a temporary table to hold rows to keep
      CREATE TEMP TABLE tmp AS
      SELECT t.*
      FROM   tbl t
      LEFT   JOIN del_list d USING (id)
      WHERE  d.id IS NULL;
    
      -- Remove all rows from the original table
      TRUNCATE tbl;
    
      -- Repopulate the original table with the retained rows
      INSERT INTO tbl SELECT * FROM tmp;</code>
    ログイン後にコピー
  • 重要な考慮事項

    <code class="language-sql">  DELETE FROM tbl t
      USING  del_list d
      WHERE  t.id = d.id
      AND    NOT EXISTS (SELECT 1 FROM related_table WHERE id = t.id);</code>
    ログイン後にコピー
同時アクセス:

説明されている方法は、同時書き込み操作がないと仮定します。 同時の書き込みが可能な場合、テーブルロックまたは代替戦略が必要になる場合があります。 テーブルサイズ:

一時テーブル方法は、使用可能なメモリ内に収まるテーブルに特に効果的です。 より小さなテーブルでは、直接削除がより速くなる可能性があります
  • 外国のキー関係:バルク削除中のエラーを防ぐために外部キー依存関係を慎重に管理します。
  • トリガーエフェクト:
  • トリガーが削除に与える影響を評価し、必要に応じてそれらを無効または変更します。 操作後は常にそれらを復元します。

以上がIDごとにデータベースから何百万行もの行を効率的に削除する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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