You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优化带日期约束的MongoDB probe集合distinct查询?

MongoDB索引优化方案(针对distinct查询超时问题)
  • 最优选择:创建(date, source.ip)复合索引
    你的查询逻辑是先按date > 指定时间过滤文档,再提取去重的source.ip。这个复合索引刚好能覆盖整个查询:MongoDB可以直接从索引中筛选出符合时间条件的条目,然后提取对应的source.ip去重,完全不需要回表读取原始文档,是效率最高的方案,能直接解决Lambda超时问题。
    索引类型选date: desc、source.ip: asc即可——date用desc是因为你查的是最近1小时的数据,索引头部是最新数据,遍历更快;source.ip用普通的升序/降序索引就行,别用text索引,text是针对全文搜索的,IP地址作为整串字符串,用普通索引才准确高效。

  • 单字段date索引:效果有限,不推荐
    单字段date索引能加速时间过滤,但过滤后还是要逐个读取符合条件的文档来提取source.ip,数据量一大(比如1小时可能有几十万甚至上百万条),回表+去重的开销还是会让查询超时,解决不了根本问题。

  • 单字段source.ip索引:完全无效
    你的查询是先按date过滤,不是按source.ip查询,这个索引根本不会被MongoDB用到,纯粹浪费存储空间和写入性能(每周新增1100万条,写入时维护索引的开销也不小)。

内容的提问来源于stack exchange,提问作者grenade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 21:59:54