事情是这样的,之前的小伙伴碰到一个sql优化的问题,,三个表联查,速度很慢要十几秒,当然这个三个表数据有个几万条的样子,想想不该呀,几万条数据而已,第一反应是索引问题,mysql完全没问题不至于这么慢嘛。
SQL :
SELECT M.member_id, M.mobile, M. STATUS, U.tj_name, U.appointtime, M.re_name, O.store_name, M.wedding_day, O.add_time, O.amount, O.poundage FROM e0e_member M LEFT JOIN e0e_appointment U ON M.mobile = U.mobile LEFT JOIN e0e_order O ON U.mobile = O.mobile ORDER BY M.member_id DESC LIMIT 0, 15
根据小伙伴自己排查的去掉“ORDER BY M.member_id DESC” 速度就很快,就像是不是member_id没加索引,然后小伙伴加上后,说是更慢了。。。。
我也是无了个语,让小伙伴把这三个表发过来看一看
//
三个表
appointment 大概有三万多不到四万的数据,
member 大概有一万多条
order 大概一万多
跑了一下速度确实慢,可能不止十几秒,,因为我没耐心等。。
然后就是给left join on加上索引,加着加着。。。发现了一个xxxxx,其中一个表里moblie用的bigint(20),另外两个用的varchar(15)。。。。
最后统一成bigint(20) 加上索引,,跑了一下。飞起来。 时间: 0.002s
ps:left join on 加索引。。有利于搜索速度