
MongoDB学习笔记(8)--索引及优化索引
发布日期:2025-04-14 15:11:47
浏览次数:8
分类:精选文章
本文共 1515 字,大约阅读时间需要 5 分钟。
MongoDB 索引的使用与优化指南
MongoDB 索引基础
在 MongoDB 中,默认会为 _id
字段创建索引,这与传统的关系型数据库(如 MySQL)中的行为一致。索引可以看作是数据存储系统的一层抽象,各类存储系统都有类似的索引实现接口。理解索引的作用对于数据库性能优化至关重要。
基础索引操作
创建索引时,字段 age
可以指定升序(1
)或降序({-1}
):
db.t3.ensureIndex({ age: 1 })
查看所有索引:
db.t3.getIndexes()
需要注意的是,系统自动创建的 _id
索引无法删除。
在数据量较大时,创建索引会消耗大量资源,因此可以在后台执行:
db.t3.ensureIndex({ age: 1 }, { background: true })
文档索引
MongoDB 的索引支持文档类型字段,甚至可以在地址字段 addr
上创建索引:
db.factories.ensureIndex({ addr: 1 })
例如,可以通过地址字段 addr
进行查询:
db.factories.find({ addr: { city: "Beijing", state: "BJ" } })
但若查询字段顺序与索引顺序不一致,则可能无法利用索引:
db.factories.find({ addr: { state: "BJ", city: "Beijing" } })
组合索引
MongoDB 支持组合索引,可以同时对 addr.city
和 addr.state
索引:
db.factories.ensureIndex({ "addr.city": 1, "addr.state": 1 })
组合索引在以下场景中非常有用:
- 查询地址信息时:
db.factories.find({ "addr.city": "Beijing", "addr.state": "BJ" })
- 按地址排序时:
db.factories.find().sort({ "addr.city": 1, "addr.state": 1 })
需要注意索引字段顺序与查询字段顺序保持一致。
唯一索引
要创建唯一索引,需在 ensureIndex
命令中指定 unique: true
:
db.t4.ensureIndex({ firstname: 1, lastname: 1 }, { unique: true })
强制使用索引
通过指定索引提示,可以强制使用索引:
db.t5.find({ age: { $lt: 30 } }).hint({ name: 1, age: 1 })
删除索引
删除表中的所有索引:
db.t3.dropIndexes()
删除特定索引:
db.t4.dropIndex({ firstname: 1 })
执行计划解释
MongoDB 提供 explain
命令以展示查询执行计划:
db.t5.find({ age: { $gt: 45 } }, { name: 1 }).explain()
explain
输出示例:
cursor
:返回类型(如BtreeCursor age_1
)nscanned
:扫描的文档数n
:返回的文档数量millis
:执行时间(毫秒)indexBounds
:使用的索引信息
通过 explain
命令可以观察索引优化效果,并针对性优化数据库性能。
##字段说明
cursor
:返回类型。nscanned
:被扫描的文档数。n
:返回的文档数量。millis
:耗时(毫秒)。indexBounds
:使用的索引信息。
发表评论
最新留言
不错!
[***.144.177.141]2025年05月05日 22时53分22秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Mojarra JSF ViewState 反序列化漏洞复现
2025-04-14
My new English
2025-04-14
Mojo:比 Python 快 35000 倍的编程语言诞生!
2025-04-14
MolecularNotes 开源项目教程
2025-04-14
MolGAN网络架构:用于小分子图的隐式生成模型
2025-04-14
Moment.js
2025-04-14
moment.js常见格式化处理各种时间方法
2025-04-14
Moment.js常见用法总结
2025-04-14
moment时间处理相关小结
2025-04-14
mongo - 正常关闭服务
2025-04-14
mongo 去重
2025-04-14
MongoDB
2025-04-14
MongoDB - 库、集合、文档(操作 + 演示 + 注意事项)
2025-04-14
MongoDB - 整合 SpringBoot 操作全流程
2025-04-14
MongoDB - 索引底层原理和使用,聚合的使用(案例 + 演示)
2025-04-14
MongoDB 3.0 增删改查及聚合操作,pymongo
2025-04-14
mongoDB 3.0 安全权限访问控制
2025-04-14
mongodb linux安装
2025-04-14