mysql - SQL删除where子句

标签 mysql

我有一个删除语句,用于删除数据库中的 20000 条记录。这20000条记录中的每一行都满足两个条件:id=x和new_tracking_number=y。详情如下:

DELETE FROM tracking_number_pool WHERE (
    (id=88 AND new_tracking_number='LPT99') OR 
    (id=87 AND new_tracking_number='LPT98') OR 
    (id=86 AND new_tracking_number='LPT97') OR 
    (id=85 AND new_tracking_number='LPT96') OR 
    (id=84 AND new_tracking_number='LPT95') OR 
    ...
    (id=72 AND new_tracking_number='LPT83') 
);

当我在生产环境中运行上面的删除语句时,执行完成需要很长时间。我想知道如何才能提高这个删除操作的效率。

最佳答案

你可以试试

DELETE FROM 
tracking_number_pool
WHERE (id, new_tracking_number) in (
  (78319988, 'LPT0000001699999'),
  (78319986, 'LPT0000001699997'),
  ..
)

关于mysql - SQL删除where子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49123673/

相关文章:

mysql - 有没有办法插入没有数据的行

php - 同时插入多行

php - PHP 中的 if 语句将 json 条目映射到 mysql 数据库

MySQL命令行和事务

mysql - 如何在MySQL、VB NET中合并同一个表的多个列

c# - MySQL Connector/NET SSL 关闭服务器

mysql - 简单的mysql性能问题

c# - OleDB 无法确定十进制值

php - 如何在不使用 CodeIgniter 中的输入的情况下一次插入多行?

PHP 比较变量每次都返回 false