mysql - 通过主键从表中删除大量行键的最快方法?
问题描述
我需要从我的表中删除几十万行。我知道我希望删除的所有行的主键(它们实际上是另一个查询的结果)。最快的方法是什么?这是我到目前为止所拥有的:
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 脚本来做到这一点?
解决方案
推荐阅读
- python - 如何更改将 float('inf') 转换为 str 的 python 方式?
- reactjs - 胜利图,堆叠的条形一内一
- javascript - 将类传递给 Salesforce 中的组件
- excel - VBA Lotus DB Search - 获取当前文档的文件夹/视图名称
- c# - 将 tsql 查询转换为 LINQ
- eclipse - 尝试查看已安装的 JRE 时出现 Eclipse 错误:无法创建选定的首选项页面
- java - 回收站视图上的图像未加载
- android - 如何使 Grid RecyclerView 项目居中?
- mysql - 为什么我收到警告:1266 在我指定 `engine=MyISAM` 时使用存储引擎 InnoDB?
- ios - 更新最低 iOS 版本后,旧 iOS 用户的应用更新