0

我对 MongoDB 中的索引有疑问。(我使用 mongo-java-driver)

如果数据库包含许多对象,所有这些对象都具有完全相同的结构,唯一的区别就是某个 ID 字段的值和名称。在 ID 字段上的某些对象之后,索引集合中的 ID 字段会加快查询速度吗?

我使用 MongoHQ “Cloud” MongoDB,也许我做错了什么,但在这种情况下索引不会获得更好的性能。

谢谢你的时间。

/* just for testing */
DBCollection table = db.getCollection("user");
table.createIndex(new BasicDBObject("uuid", 1));
....

/* write */
for (int i = 0; i < numberOfInserts; i++) {
    BasicDBObject document = new BasicDBObject();
    document.put("name", "hello");
    document.put("uuid", randomUUID.toString() + i);
    table.insert(document);
}

....
/* read */
for (int i = 0; i < numberOfInserts; i++) {
        whereQuery.put("uuid", randomUUID.toString() + i);
        DBObject findOne = table.findOne(whereQuery);
}
4

2 回答 2

1

我在研究 java mongo 驱动程序时尝试了类似的方法,并得到了相同的结果。没有索引的搜索比使用索引更好(响应时间)......

我的提示是:在 shell 上连接并使用命令“explain”....这有助于分析正在发生的事情。

于 2013-08-01T12:57:11.140 回答
0

好吧,这有点尴尬,但是索引没有带来性能提升的原因仅仅是因为本地客户端和远程数据库之间的距离很大。索引只是没有对查询时间产生影响。在客户端上进行的测试相对接近数据库索引显然带来了一些性能。

于 2013-08-02T08:43:47.803 回答