首页 > 解决方案 > 通过主键从表中删除大量行键的最快方法?

问题描述

我需要从我的表中删除几十万行。我知道我希望删除的所有行的主键(它们实际上是另一个查询的结果)。最快的方法是什么?这是我到目前为止所拥有的:

DELETE FROM my_table
WHERE id IN (SELECT id FROM another_table);

我知道我所拥有的会起作用,但这需要很长时间,因为内部查询 ( SELECT id FROM another_table) 有几十万行。这意味着它必须从几十万个结果中搜索another_table,重复几十万次my_table

更快的是只需DELETE为结果中的每个项目创建一个新的SELECT id FROM another_table。我可以借助一个小的 Python 脚本来做到这一点,但我想避免将 Python 引入我的项目堆栈中。有没有办法用 SQL 脚本来做到这一点?

标签: mysql

解决方案


推荐阅读