1 MongoDB并不适合用来做大数据的分页查询
- 为何?
- 因为,根据查询条件count总数的时候,索引根本无用。
- 使用skip+limit方式,页数越大查询性能约会越来越低。
- 分页查询性能瓶颈大概在什么数量级就能体现出来?
- 数据量不需要很大,达到几十万就开始凸显查询慢的问题了,当达到百万级别时,甚至要3s左右的时间响应了。
- 针对几十万、几百万、上千万的数据表,mysql的分页查询性能都比mongodb好了n倍。
1 | 例子: |
2 要用MongoDB并且还要分页怎么办
- 加建有索引的时间范围过滤,控制最大时间范围,确保该时间范围到数据量不会太大。
- 不使用正常的分页,即返回没有总数和总页数的信息,每次拿都是下一页下一页拿,拿到没有为止。(因为大数据量count查询超级慢)
- 如果查询条件复杂,查询的数据量很大的,就强烈建议不要用mongodb了,用ElasticSearch吧。