V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wmwmajie
V2EX  ›  问与答

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

  •  1
     
  •   wmwmajie · 2020-09-08 19:34:03 +08:00 · 709 次点击
    这是一个创建于 1831 天前的主题,其中的信息可能已经有所发展或是发生改变。

    个人对 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 哪个对数据库的压力更小? 具体会查多少? 是否有大佬详细介绍一下?

    目前尚无回复
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2658 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 15:11 · PVG 23:11 · LAX 08:11 · JFK 11:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.