ホームページ > データベース > mysql チュートリアル > データベース テーブル内の 1 億 2,000 万レコードを迅速に更新するにはどうすればよいですか?

データベース テーブル内の 1 億 2,000 万レコードを迅速に更新するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-04 17:26:41
オリジナル
848 人が閲覧しました

How Can I Quickly Update 120 Million Records in a Database Table?

1 億 2,000 万レコードを迅速に更新するためのヒント

1 億 2,000 万レコードを含むテーブルを更新しようとすると、パフォーマンスの問題が発生するのが一般的な課題です。 UPDATE ステートメントを使用する従来のアプローチは非常に遅く、完了するまでに数時間、場合によっては数日かかる場合があります。

直接更新を試みる代わりに、SELECT ステートメントを使用して 2 番目 テーブルにデータを設定することを検討してください。このアプローチは、以下に示すように、パフォーマンスに大きな利点をもたらします。

単純なケース:

  • クラスター化インデックスがなく、DML が低い期間のテーブルの場合アクティビティ:

    • 実行: SELECT *, new_col = 1 INTO clone.BaseTable FROM dbo.BaseTable
    • 新しいテーブルにインデックスや制約などを再作成します
    • ALTER SCHEMA ... TRANSFER を使用して古いテーブルと新しいテーブルを切り替えます
    • ドロップ古いtable

非単純なケース:

  • 別のスキーマで同じ名前の BaseTable を再作成します (clone. BaseTable)
  • クラスター化インデックス、ID 列、計算列、および新しい INT 列
  • トリガー、外部キー制約、非クラスター化インデックス、およびチェック制約を除外します
  • 少数の行で挿入をテストします
  • クローンテーブルを切り詰めて完全な実行を実行します。 insert
  • すべての非クラスター化制約、インデックス、トリガーを再作成します
  • dbo.BaseTable をバックアップ スキーマに移動し、clone.BaseTable を dbo スキーマに移動します
By直接更新を回避し、SELECT ステートメントの機能を活用することで、更新時間を大幅に短縮できます。大規模なテーブルでも効率的に更新できます。

以上がデータベース テーブル内の 1 億 2,000 万レコードを迅速に更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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