mysql - 如何优化这个删除查询?

标签 mysql

我正在尝试运行此查询:

delete FROM `customer` where customer_id 
not in (SELECT distinct customer_id FROM `order`);

但是需要很长时间,导致超时和中间中断,因为 customer 表有超过一百万条记录。

如何才能快速完成?还有其他选择吗?

编辑

这里是与 SELECT 相同的解释:

id  select_type     table   type    possible_keys   key     key_len     ref     rows    Extra   
1   PRIMARY     customer    index   NULL    PRIMARY     4   NULL    127659  Using where; Using index
2   DEPENDENT SUBQUERY  order   ALL     NULL    NULL    NULL    NULL    25141   Using where

最佳答案

尝试:

DELETE customer FROM customer t1 LEFT JOIN `order` t2 on t1.customer_id = t2.customer_id WHERE t2.customer_id is null;

关于mysql - 如何优化这个删除查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27858202/

相关文章:

php - 使用 Command Create 更新 Yii 中的查询不起作用

php - 我想在存储日期 20 天后自动更新我的 sql 表数据

php - CodeIgniter:将最后一个事件存储到数据库中

mysql - 如何从 mysql 数据库中选择最长的文本?

mysql - 使用 git 在两台计算机之间同步项目和数据库

mysql - 我如何只返回那些欠我钱的客户(在 mySQL 中)?

mysql - Spring MVC 中的数据库问题 - HIbernate 示例

mysql - MySQL中最大执行超时警告有多致命

mysql - 通过正则表达式在 MySQL 中匹配网站

Mysql 每天每个类别的选择计数