千家信息网

写给MongoDB开发者的50条建议Tip23

发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,本系列文章翻译自《50 Tips and Tricks for MongoDB Developers》,暂时没有找到中文版,反正自己最近也在深入学习mongodb,所以正好拿来翻译一下。一方面加强自己
千家信息网最后更新 2025年11月14日写给MongoDB开发者的50条建议Tip23

本系列文章翻译自《50 Tips and Tricks for MongoDB Developers》,暂时没有找到中文版,反正自己最近也在深入学习mongodb,所以正好拿来翻译一下。一方面加强自己学习的效果,另一方面让大 家也一起来体验一下需要我们这些mongodb使用者需要注意的地方。

首先声明自己的英文水平不是太高,加之有些英文翻译成中文也找不到合适的词来表达,所以在文章中可能会出现英文原词,或者说有些地方的翻译会有些生 硬,也就是说会出现直译的地方。翻译该书的主要目的是为大家学习探讨用的,如果有翻译不精准的地方,或者说有更加精准的翻译,还请大家指出,我会及时的更 正的,在此先谢过各位了。

Tip#23.Don't always use an index

不要总是使用索引

之前讲到了使用索引的好处,但是让我提醒你一下,并不是所有的查询都应该使用索引。假设一下,在之前的例子中,你获取的是集合中90%的文档,而不是一小部分的文档。如果这种情况下,我们还是用索引的话,我们几乎要查询所有的索引。也就是说60G的索引都会加载到内存中,根据索引的指针还会加载230G的文档到内存。总共需要加载60G+230G=290G的数据到内存,这大大超过了不用索引的情况。

因此,索引通常在你查询的只是数据的一小部分的时候很管用。有一条经验法则可以参考,一旦你返回的数据超过一半以上,就不要使用索引了。

如果你在一个字段建立索引,但是要求返回大量的数据,是很低效的。这时候你可以通过再sort中指定{"$natural":1}来告诉mongodb,本次查询不要使用索引。这样就意味着将从磁盘的顺序返回数据,强制mongodb不使用索引。

  1. >db.foo.find().sort({"$natural":1})

如果一个查询强制不使用索引,mongodb将会扫描表,意味着通过对比所有的记录来找到符合条件的文档。

每次增加、删除、更新一条新的记录,索引都会更新。假设增加一条记录,mongodb或查询新节点的值需要落在索引树的哪个位置,然后在插入索引。对于删除,也需要找到并删除索引,更新值的话,也需要同样的过程。因此索引对于写操作来说会增加额外的工作。

索引 查询 数据 地方 文档 内存 英文 学习 更新 精准 也就是 也就是说 情况 意味 文章 部分 中文 强制 合适 一方 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 分布式数据库查询优化算法 长宁区服务器回收厂家哪家便宜 数据库 选课系统 梦幻西游2服务器哪个好 重庆科教平台网络安全教育 orcal数据库无监听程序 机械电子专业软件开发 灵武app软件开发哪家专业 2016年重大网络安全事故 肥西综合网络技术服务怎么样 上海人工智能软件开发哪家便宜 临床用药软件数据库 天龙八部登录不了其他服务器 深圳云脑网络技术有限公司 数据库各种故障的恢复技术 网络安全检查总结评估报告 学信网 数据库 泄露 查询数据库中字段 已婚育龄妇女数据库 用wps怎么搭建数据库 网络安全主题班会记录怎么写 网络安全培训局 上海代理商管理软件开发平台 天津新时代软件开发服务价钱 深圳云脑网络技术有限公司 可编辑的数据库 闵行区视频系统服务器 网络安全五要五不得 空间和服务器区别 开票软件打开数据库连接失败
0