北京SEO

mysql批量删除数据sql语句详解

2019/10/10/17:37:44  阅读:2503  来源:谷歌SEO算法  标签: 谷歌CEO

mysql批量删除数据可以使用很多技巧来实现,我相信很多朋友知道的不是很多,这里我们来给大家介绍一下常用的批量删除记录的sql语法吧,希望例子能给大家带来帮助.

1.like与 in批量删除指定记录

like语法:like主要是用来模糊查询了,代码如下:

sql = "delete from A where field like '%ABC%'" 这个可用于字符与数字

in语法:sql = "delete from A where field id(1,2,3)" 这个只能用在数字

关联删除:

delete B from B

where exists (select 1 from A where B.accountid=A.accountid);

上面两条方法如果删除100W级别的数据库估计是没什么问题,如果是1000W估计就不行了,假设有一个表(syslogs)有1000万条记录,需要在业务不停止的情况下删除其中statusid=1的所有记录,差不多有600万条,直接执行 DELETE FROM syslogs WHERE statusid=1

会发现删除失败,因为lock wait timeout exceed的错误,这条语句所涉及的记录数太多,因此我们通过LIMIT参数分批删除,比如每10000条进行一次删除,那么我们可以利用 MySQL这样的语句来完成,代码如下:

DELETE FROM syslogs WHERE status=1 ORDER BY statusid LIMIT 10000;

然后分多次执行就可以把这些记录成功删除,另一种删除方向,上面通过比较觉的需要删除的量不是太大时,把需要删除的PID生到到另一个临时表中,代码如下:

  1. mysqlDBname-e"selecta.pidfromtable1a,table2bwherea.pid=b.pid">del_pid.txt;
  2. sed-i'1d'del_pid.txt
  3. awk'{print"deletefromtable1wherepid=",$1,";"}'del_pid.txt>del_pid.sql
  4. mysqlDBname<del_pid.sql
  5. //开源代码phpfensi.com

这样把SQL拆成多个SQL执行速度应该不会太慢了.

广告内容

mysql批量删除数据sql语句详解 mysql批量删除数据sql语句详解 mysql批量删除数据sql语句详解

相关阅读

热门评论

萧红SEO 萧红SEO

SEO爱好者,分享SEO经验~

总篇数212

精选文章

RMAN中catalog和nocatalog区别介绍 小技巧:为Linux下的文件分配多个权限 zimbra8.5.1安装第三方签名ssl证书的步骤 解决mysql不能远程连接数据库方法 windows服务器mysql增量备份批处理数据库 mysql中slow query log慢日志查询分析 JavaScript跨域问题总结 Linux下负载均衡软件LVS配置(VS/DR)教程 mysql中权限参数说明 MYSQL(错误1053)无法正常启动

SEO最新算法