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

mysql 获取某商品的前十条评论,不使用 group by 有什么好的方案吗?

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

    mysql 获取某商品的前十条评论,不使用 group by 有什么好的方案吗? 发现 gourp by 需要先分组在过滤出前 10 个,所有要处理的数据反而会很多。 有什么方式不用 group by 简洁高效吗?求指教

    10 条回复    2020-09-08 19:19:10 +08:00
    xmumiffy
        1
    xmumiffy  
       2020-09-08 18:27:45 +08:00 via Android
    指定商品的评论,那不是 order 加 limit 就可以么,具体表结构是什么?
    daozhihun
        2
    daozhihun  
       2020-09-08 18:30:50 +08:00
    只要查某商品的前十条评论,为啥要 group by,你 where id=xxx 不就把其他商品的都过滤掉了
    gz911122
        3
    gz911122  
       2020-09-08 18:34:11 +08:00
    window 开窗函数
    wysnylc
        4
    wysnylc  
       2020-09-08 18:36:08 +08:00
    十有八九你是要同时查询多个商品的前 10 条评论
    开窗函数可以解决
    或者异步多次查询但是小心 N+1
    wmwmajie
        5
    wmwmajie  
    OP
       2020-09-08 18:37:26 +08:00
    @xmumiffy 不好意思写错了,是多个商品的前 10 个。
    wmwmajie
        6
    wmwmajie  
    OP
       2020-09-08 18:38:28 +08:00
    是多个商品的前 10 个,写错了。
    wmwmajie
        7
    wmwmajie  
    OP
       2020-09-08 18:41:14 +08:00
    这个不用 group by 的解决方式想到有两个,比如拼接一个有多个子查询的大 sql 。
    或者就直接多次查询,单个 limit,虽然查询次数和解析 sql 语句次数变多,但是要处理的数据反而比 gourp by 少。

    就是不知道有没有更简洁的 sql 能搞定,前提是不用 gourp by
    daozhihun
        8
    daozhihun  
       2020-09-08 18:46:13 +08:00
    @wmwmajie group over partition,就是上面提到的开窗函数。
    其实多次查询也是可行的,解析 sql 不需要担心,你这些查询都很相似,不会全部重新进行分析的
    wmwmajie
        9
    wmwmajie  
    OP
       2020-09-08 19:19:05 +08:00
    @daozhihun 了解
    wmwmajie
        10
    wmwmajie  
    OP
       2020-09-08 19:19:10 +08:00
    不知道有没有人研究过 这类分组和直接循环查询的区别,个人能想到的是 分组查询比如 group by,窗口这类都需要过一遍所有满足条件的数据,例如 10 个分类,每个分类 10W 个,那是否就需要有能保存这 100W 个数据标识的内存空间和对他们分组排序的时间消耗?

    如果只是循环查询 10 次,每次 limit 10 那对数据库的压力会不会反而小很多?

    没太研究底层,只是理论上分享,望大佬答疑。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   871 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 22:50 · PVG 06:50 · LAX 15:50 · JFK 18:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.