ppn*_*012 5 mongodb mongodb-query
我有一个很大的mongodb集合(300万个文档,50 GB),即使我创建了索引,查询数据也会非常慢。
db.collection.find({"C123":1, "C122":2})
Run Code Online (Sandbox Code Playgroud)
例如,即使我已经为C123和创建了单独的索引,查询也会超时或非常慢(至少10s)C122。
我应该创建更多索引还是增加物理内存来加快查询速度?
对于这样的查询,您应该创建复合索引。在两个字段上都一个。然后它应该非常有效。创建单独的索引对您没有多大帮助,因为MongoDB引擎将首先使用它来获取查询的第一部分的结果,但是使用if则不会有太多帮助(甚至在某些情况下,由于在其中进行查找会减慢查询速度)索引表,然后再次在真实数据中)。您可以在外壳查询中使用.explain()来确认已使用的索引。
查看复合索引:
https://docs.mongodb.com/manual/core/index-compound/
在建立索引时,还要考虑两个字段的排序方向。
答案很简单。
您不需要创建更多索引,您需要创建正确的索引。field 上的索引c124不会帮助 field 上的查询c123,因此创建它没有意义。
使用更好/更多的硬件。更多 RAM,更多机器(分片)。
| 归档时间: |
|
| 查看次数: |
5433 次 |
| 最近记录: |