有些查询在相对较小的集合(约 200K 文档)上运行缓慢,即使查询中的唯一字段是索引字段也是如此。例如(使用 Java 驱动程序):
eventReportColl.distinct("host").size()
需要将近 3 秒,在 shellcoll.distinct("host").length
中需要大约 2 秒,即使主机已被索引:
coll.getIndexes()
...
{
"v" : 1,
"key" : {
"host" : 1
},
"ns" : "db.event_reports",
"name" : "host_1"
}
上述查询不使用主机索引的任何原因?不幸的是,explain() 似乎并没有起作用,所以我只能假设这是原因。这是在 MongoLab 上运行的 v2.2.4。(此外,虽然两三秒可能看起来不多,但是当您有一个 API 在返回之前运行三到四种此类查询时,它会加起来......更不用说最终的数据库大小增长了)。有没有办法强制使用索引或以其他方式加快计数查询?