mongodb查询分析计划

mongodb提供了类似传统关系型数据库的查询分析方法。

它使用** db.collection.find().explain()**分析查询计划

这个方法可以帮助我们优化代码。

例如如下的代码:

for (val=0; val < 1000000; val++) {
    db.person.save({person : val});
}

加索引之前的查询计划:

db.person.find({person:555500}).explain(); 
{ 
“cursor” : “BasicCursor”, 
“isMultiKey” : false, 
“n” : 99899, 
“nscannedObjects” : 1000000, 
“nscanned” : 1000000, 
“nscannedObjectsAllPlans” : 1000000, 
“nscannedAllPlans” : 1000000, 
“scanAndOrder” : false, 
“indexOnly” : false, 
“nYields” : 781, 
“nChunkSkips” : 0, 
“millis” : 40, 
“server” : “gaurav-Aspire-E1-572:27017”, 
“filterSet” : false 
}

加索引之后的查询计划:

db.person.find({person:555500}).explain(); 
{ 
“cursor” : “BtreeCursor person_1”, 
“isMultiKey” : false, 
“n” : 1, 
“nscannedObjects” : 1, 
“nscanned” : 1, 
“nscannedObjectsAllPlans” : 1, 
“nscannedAllPlans” : 1, 
“scanAndOrder” : false, 
“indexOnly” : false, 
“nYields” : 0, 
“nChunkSkips” : 0, 
“millis” : 0, 
“indexBounds” : { 
“person” : [ 
[ 
555500, 
555500 
] 
] 
}, 
“server” : “gaurav-Aspire-E1-572:27017”, 
“filterSet” : false 
}

返回字段说明:

_cursor:返回游标类型,有BasicCursor和BtreeCursor,BtreeCursor说明使用了索引。

nscanned:扫描document的行数。

n:返回的文档行数。

millis:耗时(毫秒)。

indexBounds:所用的索引。

** 添加索引的方式: **

db.person.ensureIndex({person:1});

1:表示升序索引 -1:表示降序索引

这个根据实际的字段排序方式建立

查询索引的方式:

db.person.getIndexes();

更多详情请参考官方文档:

http://docs.mongodb.org/manual/reference/method/cursor.explain/

转载于:https://my.oschina.net/u/3349035/blog/860250

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于提升 Java 中 MongoDB 查询速度的方法,有以下几点建议: 1. 创建适当的索引:在 MongoDB 中,索引可以显著提高查询性能。确保在查询经常使用的字段上创建索引,特别是在经常进行排序、过滤或分组的字段上。可以使用 MongoDB 的 `createIndex` 方法来创建索引。 2. 使用投影(Projection)减少返回数据量:在进行查询时,使用投影操作符来指定只返回所需的字段,以减少数据传输量。这可以通过将需要返回的字段设置为 1 或排除不需要返回的字段(设置为 0)来实现。 3. 使用聚合管道(Aggregation Pipeline):聚合管道是 MongoDB 中用于处理数据的强大工具。通过使用聚合操作符(如 `$match`、`$group`、`$project` 等),可以对数据进行多个操作,并将结果返回给客户端。使用聚合管道可以减少数据库往返次数,提高查询效率。 4. 优化查询语句:确保查询语句使用正确的查询条件和运算符,以便 MongoDB 可以有效地选择索引并执行查询。可以使用 MongoDB 的 `explain()` 方法来分析查询执行计划,并根据结果进行优化。 5. 批量操作:如果需要执行多个查询或更新操作,尽量使用批量操作(如 `insertMany`、`updateMany` 等)而不是逐个操作。这样可以减少与数据库的通信次数,提高效率。 6. 考虑数据模型设计:合理设计数据模型可以提高查询性能。根据应用的查询需求和数据访问模式,合理划分和组织文档结构,以减少查询时的数据扫描和连接操作。 7. 考虑使用缓存:如果查询结果较为稳定且数据量较大,可以考虑使用缓存技术,将查询结果缓存到内存中,以减少对数据库的频繁访问。 以上是一些常见的方法和技巧,可以帮助提升 Java 中 MongoDB查询速度。根据具体的应用场景和需求,还可以进一步深入优化和调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值