用explain 对sql语句进行优化 建议用多对一的方式查询

须要就是通常新闻都会有不少的子类,而子类又有标签,又有精选、热门等等。性能

一方面要先把大类下的全部子类找出来,而后根据标签找。code

` SELECT * FROM w_news_list a left join w_flag_value c on a.id=c.nid WHERE a.cid IN (9,10,11,12,13,14,15,17,19,1) GROUP BY a.id ORDER BY a.id DESC LIMIT 0,12索引

` 我这里都不到10000条记录,执行的时候已经超过12秒了。图片

输入图片说明

用了explain分析以后 发现c表没有用索引ci

用了索引以后 速度仍是很慢it

输入图片说明

看来不是索引问题 接下来 我换种思路 原本是一对多的,如今变成多对一的形式 SELECT * FROM w_flag_value c left join w_news_list a on a.id=c.nid WHERE a.cid IN (9,10,11,12,13,14,15,17,19,1) GROUP BY a.id ORDER BY a.id DESC LIMIT 0,12im

这样子以后性能就上来了,img

相关文章
相关标签/搜索