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)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值