mysql order by group by limit 查询缓慢

末蓝、 2022-11-19 12:55 332阅读 0赞

需求:分组排序取一段数据
问题:在正常的查询情况下查询效率低下

总表有10w,下面的查询语句查询时间达到了2.648s,时间表有80W查询时间达到了18s,显然很不符合要求

  1. 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的方式进行查询。

  1. 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)

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

发表评论

表情:
评论列表 (有 0 条评论,332人围观)

还没有评论,来说两句吧...

相关阅读

    相关 mysql group by order by

    这两天让一个数据查询难了。主要是对group by 理解的不够深入。才出现这样的情况 这种需求,我想很多人都遇到过。下面是我模拟我的内容表 复制代码 代码如下: