データベース内のデータをバッチで削除する Mysql メソッド: LIMIT パラメーターを使用してバッチで削除します。構文は [DELETE FROM syslogs WHERE status=1 ORDER BY statusid LIMIT 10000] です。
Mysql でデータベース内のデータを一括削除する方法:
10 件のテーブル (syslog) があるとします。 100 万件のレコードがあるため、業務を停止せずに statusid=1 のすべてのレコードを削除する必要があります。約 600 万件のレコードがあります。DELETE FROM syslogs WHERE statusid=1
を直接実行すると、削除に失敗することがわかります。ロック待機タイムアウトがエラーを超えたためです。
このステートメントに含まれるレコードが多すぎるため、LIMIT
パラメーターを使用してバッチで削除します。たとえば、10,000 レコードごとに削除します。その後、MySQL のようなステートメントを使用して完了できます:
DELETE FROM syslogs WHERE status=1 ORDER BY statusid LIMIT 10000;
その後、これを複数回実行して、これらのレコードを正常に削除します。
注:
大規模な一括削除を実行する場合は、制限を使用するように注意してください。制限を使用しない場合、大量のデータを削除するとデッドロックが発生する可能性があるためです。
delete where ステートメントがインデックスにない場合は、まず主キーを見つけてから、主キーに基づいてデータベースを削除できます。
誤用を防ぐために、更新および削除するときに制限 1 を追加することをお勧めします。
#その他の関連する無料学習の推奨事項: mysql チュートリアル(ビデオ)
以上がmysqlでデータベース内のデータを一括削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。