首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

delete inner join 慢的死机,该怎么处理

2012-05-05 
delete inner join 慢的死机SQL codedelete table1,table2 from table1 inner join table2where table1.id

delete inner join 慢的死机

SQL code
delete table1,table2 from table1 inner join table2where table1.id = table2.idand table1.type = 'music'


2个表各储存一些信息,由相同的ID关联。
每个表105,000条记录,现在要删除table1.type = 'music'的所有信息,大概7,000条。
我用上面的语句,结果造成死机。是不是1000个mysql connection都被消耗完了?
有什么方法提高效率吗?谢谢。

[解决办法]
join要跟on来限定join的条件.

SQL code
delete table1,table2 from table1 inner join table2on table1.id = table2.idwhere table1.type = 'music'
[解决办法]
与连接数没关系。那1000个连接是指用户连接。

你的这个SQL语句慢可能的原因,
1) 查询速度慢,你的连接查询后产生大量记录,或者表中没有适当的索引。
2)其它并发用户锁定了表,造成了你的等待。
[解决办法]
在mysql中inner join完全等同于,
好汉可以试试
SQL code
delete table1,table2 from table1 ,table2where table1.id = table2.idand table1.type = 'music'
[解决办法]
检查一下索引情况,在ID上有索引?
[解决办法]
探讨
delete table1,table2
from table1
inner join table2
where table1.id = table2.id
and table1.type = 'music'

[解决办法]
SQL code
create table delete_id asselect table1.id from table1 inner join table2 on table1.id = table2.idwhere table1.type = 'music';create index indx1 on delete_id(id);delete from table1 where id in(select id from delete_id);delete from table2 where id in(select id from delete_id);
[解决办法]
SQL code
truncate table delete_id;drop table delete_id; 

热点排行