SELECT 
        o.*
    FROM
        `order` AS o
    left join order_shipping as os ON os.fk_order_code = o.order_code
    where
        os.order_shipping_seq IS NULL需要查询的正是order_shipping_seq 是 null的
但是数据量越来越大语句执行越来越慢了。
希望高人指点下 

解决方案 »

  1.   

    o.fk_order_code = os.order_code
      

  2.   

    在 order_shipping_seq 字段上建立索引了没有 
      

  3.   

    order_shipping_seq 是主键
    order_code 是主键
    fk_order_code 是外建
      

  4.   

    就是查询 order_shipping表里面不存在的order信息
      

  5.   

    explain 结果
    id,select_type,table,type,possible_keys,key,key_len,ref,rows,Extra
    1,SIMPLE,o,ALL,NULL,NULL,NULL,NULL,142893,
    1,SIMPLE,os,ref,order_code,order_code,54,ma_demo.o.order_code,1,"Using where Not exists"
      

  6.   

    select * from order o where not exists (select 1 from order_shipping where fk_order_code=o.order_code)我一般会这样写,但对你来说可能没有质的改变mysql集合操作没有minus类似用法很大的改善,可以考虑order_shipping表加触发器,在order表冗余字段+索引下,等着看看各位方案