SELECT CASE WHEN ruhuo.theMisCode IS NOT NULL AND ruhuo.theMisCode <> '' THEN '已进仓' ELSE '' END AS cangkuFlag, a.* FROM jijiaMisOrder a LEFT OUTER JOIN ruhuo ON a.misID = ruhuo.theMisCode order by a.id desc 这sql语句有办法优化吗?
jijiaMisOrder表只有几千条数据, ruhuo表里面有几十万条数据,由于ruhuo表的数据比较多,所以语句执行比较慢,需要5秒左右才有反应
jijiaMisOrder表只有几千条数据, ruhuo表里面有几十万条数据,由于ruhuo表的数据比较多,所以语句执行比较慢,需要5秒左右才有反应
你可以考虑对misID , heMisCode建立索引了.
2/ 如果“, a.* ”换成仅需的字段,也会好一些。相信你用不了那么多字段。比如a.id,a.misID..
3/ 将ruhuo.theMisCode IS NOT NULL and ruhuo.theMisCode <> ''换到left join .. on 后面,先取非空结果集,而不是在所有数据中最后判断非空。以上不保证一定有效,建议尝试。
THEN '已进仓' ELSE ''
END AS cangkuFlag
, a.*
FROM jijiaMisOrder a
LEFT OUTER JOIN ruhuo
ON a.misID = ruhuo.theMisCode
ORDER BY A.ID DESC
选中这句话,ctrl + L看看执行计划,如果有table scan的地方则给相关字段加上Index。