在mysql中inner join完全等同于, 好汉可以试试 delete table1,table2 from table1 ,table2 where table1.id = table2.id and table1.type = 'music' 此方法易于理解。
分部操作比较清晰 delete from table2 where table2.id in (select id from table1 where type='music') delete from table1 where type='music'
create table delete_id as select table1.id from table1 inner join table2 on table1.id = table2.id where 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);
delete table1,table2
from table1
inner join table2
on table1.id = table2.id
where table1.type = 'music'
或者不用join keyword("implicit join notation"):
delete table1,table2
from table1, table2
where table1.id = table2.id and table1.type = 'music'
1) 查询速度慢,你的连接查询后产生大量记录,或者表中没有适当的索引。
2)其它并发用户锁定了表,造成了你的等待。
好汉可以试试
delete table1,table2
from table1 ,table2
where table1.id = table2.id
and table1.type = 'music'
此方法易于理解。
delete from table2 where table2.id in (select id from table1 where type='music')
delete from table1 where type='music'
create table delete_id as
select table1.id
from table1 inner join table2 on table1.id = table2.id
where 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);
truncate table delete_id;
drop table delete_id;