开心档-软件开发入门之MongoDB 查询分析
2023-06-13 09:16:56 时间
作者简介:每天分享MongoDB教程的学习经验、和学习笔记。
座右铭:有自制力,做事有始有终;学习能力强,愿意不断地接触学习新知识。
个人主页:iOS程序应用的主页
前言
本章将会讲解MongoDB 查询分析
MongoDB 查询分析
MongoDB 查询分析可以确保我们所建立的索引是否有效,是查询语句性能分析的重要工具。
MongoDB 查询分析常用函数有:explain() 和 hint()。
使用 explain()
explain 操作提供了查询信息,使用索引及查询统计等。有利于我们对索引的优化。
接下来我们在 users 集合中创建 gender 和 user_name 的索引:
>db.users.ensureIndex({gender:1,user_name:1})
现在在查询语句中使用 explain :
>db.users.find({gender:"M"},{user_name:1,_id:0}).explain()
以上的 explain() 查询返回如下结果:
{
"cursor" : "BtreeCursor gender_1_user_name_1",
"isMultiKey" : false,
"n" : 1,
"nscannedObjects" : 0,
"nscanned" : 1,
"nscannedObjectsAllPlans" : 0,
"nscannedAllPlans" : 1,
"scanAndOrder" : false,
"indexOnly" : true,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 0,
"indexBounds" : {
"gender" : [
[
"M",
"M"
]
],
"user_name" : [
[
{
"$minElement" : 1
},
{
"$maxElement" : 1
}
]
]
}
}
现在,我们看看这个结果集的字段:
- indexOnly: 字段为 true ,表示我们使用了索引。
- cursor:因为这个查询使用了索引,MongoDB 中索引存储在B树结构中,所以这是也使用了 BtreeCursor 类型的游标。如果没有使用索引,游标的类型是 BasicCursor。这个键还会给出你所使用的索引的名称,你通过这个名称可以查看当前数据库下的system.indexes集合(系统自动创建,由于存储索引信息,这个稍微会提到)来得到索引的详细信息。
- n:当前查询返回的文档数量。
- nscanned/nscannedObjects:表明当前这次查询一共扫描了集合中多少个文档,我们的目的是,让这个数值和返回文档的数量越接近越好。
- millis:当前查询所需时间,毫秒数。
- indexBounds:当前查询具体使用的索引。
使用 hint()
虽然MongoDB查询优化器一般工作的很不错,但是也可以使用 hint 来强制 MongoDB 使用一个指定的索引。
这种方法某些情形下会提升性能。 一个有索引的 collection 并且执行一个多字段的查询(一些字段已经索引了)。
如下查询实例指定了使用 gender 和 user_name 索引字段来查询:
>db.users.find({gender:"M"},{user_name:1,_id:0}).hint({gender:1,user_name:1})
可以使用 explain() 函数来分析以上查询:
>db.users.find({gender:"M"},{user_name:1,_id:0}).hint({gender:1,user_name:1}).explain()
相关文章
- 开心档-软件开发入门之MongoDB 覆盖索引查询
- MongoDB性能优化技巧:提升查询效率(mongodb查询优化)
- MongoDB开发:从入门到精通(mongodb开发语言)
- MongoDB基础入门:快速掌握NoSQL技术(mongodb基础教程)
- MongoDB配置安全身份认证机制(mongodb身份认证)
- 优化MongoDB索引优化之路,让性能更上一层楼(mongodb索引结构)
- 协议MongoDB: 学习二进制协议的入门(mongodb二进制)
- MongoDB主从搭建的快速入门指南(mongodb主从搭建)
- 推荐提升工作效率:MongoDB 代码推荐(mongodb代码)
- MongoDB入门指南:学习基础知识(mongodb基础入门)
- MongoDB与Redis的异同比较(mongodb和redis的区别)
- 简单步骤:使用MongoDB连接数据库(mongodb连接数据库)
- Mongodb中文入门:学习走进NoSQL世界(mongodb中文)
- MongoDB:开启地理索引之旅(mongodb地理索引)
- 快速入门:如何使用Mongodb导入数据库(mongodb导入数据库)
- MongoDB并发:优化数据库性能的关键措施(mongodb并发)
- MongoDB:高效存储文档的首选数据库方案(mongodb存储文档)
- 深入浅出MMap在MongoDB中的应用(mmapmongodb)
- MongoDB入门必学:视频教程引领你开启NoSQL学习之旅(mongodb入门视频)
- 搭建MongoDB环境搭建快速入门指南(mongodb环境)
- Mongodb大小写敏感性:为什么要区分大小写?(mongodb区分大小写)
- 使用 MongoDB 指定 IP 地址进行数据库连接的方法(mongodb指定ip)
- 用MongoDB 让你的技术生活更精彩(为什么要用mongodb)
- 究竟如何快速安装MongoDB?(怎么安装mongodb)
- MongoDB连接配置:轻松入门!(mongodb 连接配置)
- MongoDB:实现增删改查的多种可能性(mongodb增删改查)
- 掌握MongoDB中查询字段的技巧(mongodb查询字段)