我需要从表中删除数十万行。我知道我要删除的所有行的主键(它们实际上是另一个查询的结果)。最快的方法是什么?这是我到目前为止的内容:
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脚本来做到这一点?