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)

在这里插入图片描述
得到的结果与联合查询相差不大

猜你喜欢

转载自blog.csdn.net/weixin_43674113/article/details/112522614