MySQL テーブル内の最新の N レコードを除くすべてのレコードを削除するにはどうすればよいですか?
Jan 08, 2025 pm 04:21 PM古い MySQL レコードを効率的に削除し、最新の N レコードのみを保持します
MySQL テーブル内の最新の N エントリを除くすべてのエントリを削除するには、慎重なクエリ構築が必要です。 LIMIT
ステートメント内で DELETE
を使用する単純なアプローチは、MySQL の制限により失敗することがよくあります。
一般的な欠陥のある試みは次のようになります:
DELETE FROM `table` ORDER BY `id` ASC LIMIT ((SELECT COUNT(*) FROM `table`) - N);
MySQL では LIMIT
句内で直接サブクエリを許可しないため、これは失敗します。
堅牢なソリューションでは、ネストされたサブクエリを使用します。
DELETE FROM `table` WHERE `id` NOT IN ( SELECT `id` FROM ( SELECT `id` FROM `table` ORDER BY `id` DESC LIMIT 42 -- Replace 42 with your desired N ) AS `subquery` );
このメソッドは、最初に内部サブクエリを使用して、N 個の最新レコード (id
の降順) の ID を選択します。次に、外側のクエリは、この内側の選択に ID が存在しないを持つすべてのレコードを削除します。これにより、事実上、最新の N 個のエントリのみが保持されます。
42
を希望する N
の値に置き換えることを忘れないでください。 大規模なデータセットで最適なパフォーマンスを得るには、さらなる最適化手法が必要になる場合があります。 代替アプローチを検討し、速度を大幅に向上させるために id
列のインデックス作成を検討してください。 特定のパフォーマンスのニーズに合わせた高度なソリューションについては、追加のリソースを参照してください。
以上がMySQL テーブル内の最新の N レコードを除くすべてのレコードを削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか?

Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし)

MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド

共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか?

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか?
