mysql批量删除数据sql语句详解
发布:smiling 来源: PHP粉丝网 添加日期:2014-09-24 09:45:46 浏览: 评论:0
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生到到另一个临时表中,代码如下:
- mysql DBname -e "select a.pid from table1 a ,table2 b where a.pid=b.pid">del_pid.txt;
- sed -i '1d' del_pid.txt
- awk '{print "delete from table1 where pid=",$1,";"}' del_pid.txt >del_pid.sql
- mysql DBname<del_pid.sql
- //开源代码phpfensi.com
这样把SQL拆成多个SQL执行速度应该不会太慢了.
Tags: mysql批量删除 mysql删除sql
相关文章
- ·mysql批量删除相同前缀的表和修改表名(2014-10-03)
- ·mysql批量删除表与清空数据库(2014-10-04)
- ·mysql批量删除特殊字符串(2014-10-10)
- ·MySQL多表关联数据同时删除sql语句(2014-10-10)
- ·mysql数据库中索引查看建立删除的sql语句(2015-04-20)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)