简介项目中遇到一个网页十分的卡慢,逐条排查,将sql放进去执行,执行时间居然高达19秒,怪不得慢,于是请教大佬,最后sql控制在1到两秒之间,现在想想,不同的写法,sql的执行效率真是天差地别呀!首先我们
项目中遇到一个网页十分的卡慢,逐条排查,将sql放进去执行,执行时间居然高达19秒,怪不得慢,于是请教大佬,最后sql控制在1到两秒之间,现在想想,不同的写法,sql的执行效率真是天差地别呀!
首先我们来看看原sql
SELECT * FROM `publish_task_walmart_new` group by parent_sku,account_id order by id desc limit 0,50
再看看优化后的sql
SELECT * from publish_task_walmart_new where id in( select t.id FROM(select id FROM publish_task_walmart_new GROUP BY parent_sku,account_id order by id desc limit 0,50) as t)
或者子查询
SELECT * from publish_task_walmart_new where id in( select t.id FROM(select id FROM publish_task_walmart_new GROUP BY parent_sku,account_id order by id desc limit 0,50) as t)
首先查询慢第一想到的有没有建立索引..
我看了下发现parent_sku和account_id都有建立索引,EXPLAIN分析居然没有走索引
突然想到联合索引于是建了这个联合索引.
再去查询时间缩短到了10秒,效率提升了一半,然而还是太慢.
于是请教了大佬,就有了上面的结论!
数据库一共就80W条记录,也不多,看来还是得看看高性能mysql呀!