开发者社区> 问答> 正文

MongoDB查询字段有大量重复值

现在做一个项目用mongodb按天存储数据。一天的数据量大概在1.4亿条。
这个集合有用户字段和时间字段
其中 用户的标识大概是10万种(肯定就这10万个)
时间是按分钟存 即 00:00 ,00:01这样存
那我对这两个字段建立索引后,查询某个用户的所有数据的查询时间大概能到多少?
不建索引花费时间多少?只对时间建索引花费时间多少?只对用户建索引花费时间多少?
这样的数据建索引是否比没有大量重复值的数据建索引速度要快很多?

展开
收起
落地花开啦 2016-02-19 13:56:40 6126 0
2 条回答
写回答
取消 提交回答
  • 阿里云高级技术专家

    补充一下楼上的,索引通常会常驻内存,但如果实例配置的内存不足,索引也是需要先从硬盘加载的;

    如果需要对用户、时间2个维度分别进行查询,则需要针对2个维度分别建立索引。索引的原理参考:https://yq.aliyun.com/articles/33726?spm=0.0.0.0.PsBXc4&msgid=12861

    2019-07-17 18:44:37
    赞同 展开评论 打赏
  • 郑涔,花名明俨,阿里云数据库组高级技术专家,主要关注分布式存储、Nosql数据库等技术领域,目前主要参与MongoDB云数据库的研发,致力于让开发者用上最好的MongoDB云服务
    1. MongoDB索引使用b tree数据结构,查找算法复杂度是O(logn),并且是内存访问,而如果没有索引则要做全表扫描,通常需要涉及磁盘io。在访问性能量级上内存是ns级别,ssd是us级别,sata盘是ms级别。
    2. 如果只对时间建索引,查询某个用户的所有数据还是需要全表扫描;只对用户建索引和两个字段建索引花费时间一样。
    3. 建索引速度应该只和数据量有关
    2019-07-17 18:44:37
    赞同 1 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Data as a Service - 数据即服务 -- MongoDB⾼级应⽤模式 立即下载
阿里云MongoDB云服务构建 立即下载
饿了么高级架构师陈东明:MongoDB是如何逐步提高可靠性的 立即下载