A表
goods_id
goods_nameB表
goods_id
goods_nameA表300万数据,B表300万数据。现在要统计出B表中goods_name和A表中goods_name不相同的记录,然后插入到C表 
C表的结构也是
goods_id
goods_name我是这样写的
insert into C (goods_id,goods_name) select m.goods_id,m.goods_name from A m left join B g on  m.goods_name = g.goods_name where g.goods_name is null 半天了。没显示结果。有没有更高效的办法?

解决方案 »

  1.   

    2表goods_name上建立索引没有
    insert into C (goods_id,goods_name) select m.goods_id,m.goods_name from A m
    where not exists(select 1 from B g on  m.goods_name = g.goods_name)  
      

  2.   

    没索引的话,运行起来是全表扫描。
    看你的语句,应该goods_id是主键,为什么不用它进行连接呢?
      

  3.   


    goods_id不相同。。2个表的goods_id是相互独立的。没任何关系
      

  4.   

    分析下,select语句是否怎么走的,explain select ...
      

  5.   

    提供以下信息以供分析explain select m.goods_id,m.goods_name from A m left join B g on  m.goods_name = g.goods_name where g.goods_name is null ;show index from A;
    show index from B;