mysql order by group by limit 查询缓慢
需求:分组排序取一段数据
问题:在正常的查询情况下查询效率低下
总表有10w,下面的查询语句查询时间达到了2.648s,时间表有80W查询时间达到了18s,显然很不符合要求
SELECT * FROM `publish_task_walmart_new` group by parent_sku,account_id order by id desc limit 0,50
- 这里已经添加上了索引但是还是异常的缓慢
定位问题基本上是
group by
分组耗时时间比较长,重点优化方向,进行语句优化SELECT * FROM (SELECT id FROM
publish_task_walmart_new
group by parent_sku,account_id order by id desc limit 0,50
)as maix LEFT JOIN publish_task_walmart_new as b on maix.id=b.id
- 这里通过先分组找出id,在进行联合查询的方式,查询结果的时间变为0.171s,效率大大的提升
-这里我们用到了联合查询的方式,在我们获取到了id过后,其实我们可以使用where in的方式进行查询。
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)
得到的结果与联合查询相差不大
还没有评论,来说两句吧...