ホームページ > データベース > mysql チュートリアル > SQL テーブルの上位 N 行を除くすべての行を効率的に削除するにはどうすればよいですか?

SQL テーブルの上位 N 行を除くすべての行を効率的に削除するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-20 04:36:09
オリジナル
865 人が閲覧しました

How to Efficiently Delete All But the Top N Rows in an SQL Table?

SQL テーブルの行を効率的に削除し、上位 N 行のみを保持する

データベース テーブルをすべてパージする必要があるシナリオを考えてみましょう。ただし、特定の基準に基づいた上位 n 行です。このタスクは、さまざまなアプローチを使用して SQL で実現できます。ここでは、効果的な解決策を検討します。

オプション 1: DELETE ステートメントと SELECT TOP ステートメントを使用する

このアプローチは、 DELETE ステートメントは行を削除し、SELECT TOP ステートメントは上位 n 行を識別します。構文は次のとおりです。

DELETE FROM Table
WHERE ID NOT IN (SELECT TOP 10 ID FROM Table)
ログイン後にコピー

ただし、Chris が正しく指摘しているように、このメソッドでは、削除される行ごとに SELECT TOP クエリが実行されるため、パフォーマンスが低下する可能性があります。

代替オプション: 一時テーブルを使用する最適化

パフォーマンスの問題を軽減するには、次の最適化されたアプローチを検討してください。

SELECT TOP 10 ID INTO #Top10
DELETE FROM Table
WHERE ID NOT IN (SELECT ID FROM #Top10)
DROP TABLE #Top10
ログイン後にコピー

この方法には、上位 n 個の ID を保存する一時テーブル (#Top10) の作成が含まれます。次に、DELETE ステートメントはこの一時テーブルを使用して、残りの行を効率的に削除します。最後に、システム リソースを解放するために一時テーブルが削除されます。

この代替アプローチでは、行を削除するたびに SELECT TOP クエリを実行する必要がなくなり、パフォーマンスが大幅に向上し、その結果、大きなテーブルの実行時間が短縮されます。

以上がSQL テーブルの上位 N 行を除くすべての行を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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