根據 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中文網其他相關文章!