gpt4 book ai didi

Java Mongo索引查询

转载 作者:行者123 更新时间:2023-12-01 13:17:16 25 4
gpt4 key购买 nike

Mongodb中有1M数据,数据格式如下:

key:"xyz", time:10

我正在编写一个Java程序来根据“键”和“时间”范围从Mongodb查询数据,例如

BasicDBObject query = new BasicDBObject("key", "xyz")
.append("time", new BasicDBObject("$gt", 99999).append("$lt", 100010));

在查询之前,我先为“Key”和“time”字段设置索引,如下所示:

table.ensureIndex(new BasicDBObject("key", 1));
table.ensureIndex(new BasicDBObject("time", 1));

查询性能实际上运行良好(大约每秒 4k)。所以我的问题是,我将“key”和“time”的索引设置为 1 表示在这种情况下升序。那我把它们设置为-1或者其中一个为1,另一个为-1呢?根据我的情况,1 和 -1 之间的性能差异是什么?

最佳答案

对于单字段索引,指定升序还是降序并不重要。不会有任何性能影响。

顺序仅对复合索引(即在 2 个或更多字段上创建的索引)有意义。如果我们在“key”(asc)和“time”(desc)字段上创建复合索引,即 {key:1, time:-1},则查询 db.collection.find({key:"xyz", time:10}) 将仅在查询的第一部分使用索引,即仅用于使用“key”过滤文档。索引的第二部分未使用。

此外,MongoDB 仅使用索引进行查询。在您所描述的情况下,由于您创建了 2 个单独的索引,因此仅使用“key”索引。如果您创建复合索引 {key:1, time:1}(均为升序),那么您的查询将会执行得更好。

关于Java Mongo索引查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22366008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com