V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
zxCoder
V2EX  ›  问与答

一个 mongodb 的查询优化问题

  •  
  •   zxCoder · Aug 20, 2021 · 903 views
    This topic created in 1714 days ago, the information mentioned may be changed or developed.

    想查询满足 a,b,c,d 四个条件(加了组合索引),然后按 username 分组,求组的数量。

    let cnt = await Game.aggregate([
            {
                $match: {
                    a,
                    b,
                    c,
                    d,
                }
            },
            {
                $group: {
                    _id:"$username",
                }
            },
            {
                $count: "cnt",
            }
        ]);
    

    使用的是 mongoose 创建组合索引

    GameSchema.index({a:1,b:1,c:1,d:1});
    

    现在大约才 200 条数据,这个查询要 200ms 左右,是哪里出问题了吗

    Supplement 1  ·  Aug 20, 2021

    看来应该是mongodb cloud的坑了,送的这512MB空间,慢的一比,随便一个查询都要200ms以上,还以为可以搭个小应用。。。看来是没戏了

    2 replies    2021-08-20 14:19:55 +08:00
    yxwzaxns
        1
    yxwzaxns  
       Aug 20, 2021
    试试不加索引需要多少时间?
    200 条数据可能体现不出索引的效果,有可能还有反效果?
    zxCoder
        2
    zxCoder  
    OP
       Aug 20, 2021
    @yxwzaxns 好像确实没起作用。。。没索引也是稳定 200ms,难道是 mongodb cloud 送的免费计划太坑了?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2638 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 11:27 · PVG 19:27 · LAX 04:27 · JFK 07:27
    ♥ Do have faith in what you're doing.