非更新アプローチを使用した 1 億 2,000 万レコードの効率的な更新
1 億 2,000 万のレコードを含む広大なテーブルを更新するパフォーマンスを向上させるには、非更新アプローチを採用することが不可欠です。この手法では、SELECT ステートメントを利用して、必要な変更を 2 番目のテーブルに追加します。
実装:
- 2 番目のテーブルを格納する別のスキーマを作成します。クラスター化インデックス、ID 列、計算列、および新しい INT 列が含まれていることを確認します。この作成プロセスでは、トリガー、外部キー制約、および非クラスター化インデックスを除外します。
- 1000 行を使用してテスト挿入を実行し、機能とデータの精度を検証します。
- 2 番目のテーブルを切り捨てて開始します。完全な挿入。
- すべての非クラスター化主キー/一意を再構築します。制約/インデックス、外部キー制約、デフォルト制約、およびチェック制約を別個のバッチとして実行します。
- 元のテーブルをバックアップ スキーマに転送し、2 番目のテーブルをプライマリ スキーマに転送します。
- トリガーを使用します。潜在的な調整のために、スキーマ転送プロセス中に元のテーブルのすべての DML をログに記録します。
利点:
この非更新アプローチには、従来の更新方法に比べて大きな利点があります。これにより、長期にわたる非効率な更新プロセスが排除され、より高速で信頼性の高いデータ変更エクスペリエンスが保証されます。
追加の考慮事項:
- このアプローチは、オフライン操作で次のことを行うのに最適です。システムのライブ更新中に発生する可能性のあるデータ整合性の問題を最小限に抑えます。
- 大規模なデータセットの場合は、実装を検討してください。一括ログまたは単純なリカバリ モデルを使用して、パフォーマンスを最適化します。
- 正しく正確な結果を確実に得るために、変更を試みる前に要件とデータ構造を注意深く確認してください。
以上がUpdate ステートメントを使用せずに 1 億 2,000 万のデータベース レコードを効率的に更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。