mysql sql语句分析

1、

SELECT
    a.id
    ,b.order_id,b.attr
  FROM
    tourist_order a
    LEFT JOIN order_attr b
    ON a.id = b.order_id    
    AND b.attr='order_status'
    WHERE
    b.order_id IS NULL
    AND a.create_type!=19
    AND a.added_time>='2014-01-01'
    AND a.sign_date='0000-00-00'
    AND a.back_time>NOW()
#    AND a.id=3526098

目标是查询table表中没有attr等于"order_status"的订单号

AND b.attr='order_status'放在where前和where后是不一样的。

where后面的语句会过滤之前left join的结果

2、

select * from table where update_time>='2000-00-00 00:00:00' order by id limit 10000,100;

上面的order by id 会将满足更新时间的所有记录按照id正序排列,然后取10000条开始的100条,严重影响性能。

原文地址:https://www.cnblogs.com/usual2013blog/p/3853445.html