mysql 遍历查询的性能,msyql group by,窗口函数 和 直接循环查询性能分析

个人对 mysql 底层源码没怎么研究,有一个问题比较好奇,咨询一下各位大佬。

就是比较常见的商品最新十条评论问题。

比如现在有十个商品,每个商品有 10 万条评论。

那么要取出这十个商品的前十条评论大概有以下几种方式:

1.通过 group by 或者 mysql8 的窗口函数分钟排序查询。

2.直接 循环十次

3.在商品表维护一个最新的十个评论的 id,然后直接查 id

4.我不知道的方式*_*

个人认为速度最快对数据库压力最小的肯定是 3,直接 id 查询。

主要就是疑惑第一种方式,这种方式应该是比较常用的,毕竟循环查询比较 low 。

但是这里有一个问题:group by 或者窗口函数都是需要对所有满足 where 条件的数据先进行一遍处理,在这个例子里面就是 100 万数据,这里是否会需要消耗相应的内存来存这 100 万数据的 id 或者标记?或者建立一个临时表?

方式 2 虽然代码循环了 10 次并查询了 10 次,这里肯定实在一个 mysql 连接里面不新建连接,但是总共需要处理的也就 100 行数据,那么 1 和 2 哪个对数据库的压力更小? 具体会查多少?

是否有大佬详细介绍一下?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值