id
に基づいて数百万の行を削除するための高性能戦略何百万ものデータベース行を削除することは、非常に時間がかかる場合があります。このガイドは、IDを使用してこれらの行を効率的に削除するための最適な方法を詳述しています。
主要な最適化手法
VACUUM
一時的なテーブルアプローチ:ANALYZE
効率が向上するには、保持する行を含む一時テーブルを作成します。 メインテーブルから直接削除してから、一時テーブルからのデータで再農業を再現します。これにより、削除のカスケードが回避され、プロセスが簡素化されます
一時テーブルを使用する
外国の重要な考慮事項を伴う直接的な削除:
<code class="language-sql"> -- Create a temporary table to hold rows to keep CREATE TEMP TABLE tmp AS SELECT t.* FROM tbl t LEFT JOIN del_list d USING (id) WHERE d.id IS NULL; -- Remove all rows from the original table TRUNCATE tbl; -- Repopulate the original table with the retained rows INSERT INTO tbl SELECT * FROM tmp;</code>
重要な考慮事項
<code class="language-sql"> DELETE FROM tbl t USING del_list d WHERE t.id = d.id AND NOT EXISTS (SELECT 1 FROM related_table WHERE id = t.id);</code>
説明されている方法は、同時書き込み操作がないと仮定します。 同時の書き込みが可能な場合、テーブルロックまたは代替戦略が必要になる場合があります。 テーブルサイズ:
一時テーブル方法は、使用可能なメモリ内に収まるテーブルに特に効果的です。 より小さなテーブルでは、直接削除がより速くなる可能性があります以上がIDごとにデータベースから何百万行もの行を効率的に削除する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。