delete a from table1 a inner join table2 b on a.id=b.id

解决方案 »

  1.   

    in子查询这个样的语句在mysql5.6之前一直是禁止使用的 效率极差 改成表连接的方式
      

  2.   


    删除,修改,查询 使用 in 关键字,如果对应的值太多时,都会卡死的,建议使用inner join 替换in  。
    替换详细用法,参加我的博客 :http://blog.csdn.net/jenminzhang/article/details/8861148
      

  3.   

    http://blog.csdn.net/jenminzhang/article/details/9629749
    增加,删除,查询均有 
      

  4.   

    之所以会卡
    是因为子查询的操作会铁定会创建临时表,当然创建内存临时表并不可怕
    但是当你数据量大了以后,内存临时表的单表大小限制后,临时表会转换为写磁盘形式的物理内存表这两个参数决定了你临时表的大小
    tmp_table_size  max_heap_table_size你可以查看这两个状态状态的变化,看你数据库性语句是否有问题。
    Created_tmp_disk_tables/Created_tmp_tables<5%   解决方法的话: 楼上说了,用join语法, 特定的情况才去用子查询
      

  5.   

    据说用where exists子查询可以提高检索速度,可以试试:
    delete from table1 a where exists(select 1 from table2 b where a.id=b.id)