Mongodb索引简介

学习mongodb,体会mongodb的每一个使用细节,欢迎阅读威赞的文章。这是威赞发布的第84篇mongodb技术文章,欢迎浏览本专栏威赞发布的其他文章。如果您认为我的文章对您有帮助或者解决您的问题,欢迎在文章下面点个赞,或者关注威赞。谢谢。

在Mongodb当中,为集合添加索引能够提高查询效率 。如果没有索引,Mongodb必须扫描集合中的每一个文档数据来返回查询结果。如果集合当中包含查询合适的索引,Mongodb就可以使用该索引限制扫描文档的数量。尽管索引能够提高查询效率,但为集合添加索引会对Mongodb数据写入性能产生负面的影响。对于大量读写的集合,加入索引的代价是昂贵的,因为每一次数据插入和更新,都会带来索引的更新。

应用场景

当应用经常重复的针对集合中的某个字段或一些字段进行查询时,系统维护人员使用这些字段来创建索引,能够提高查询性能。例如下面的一些场景

|-------------------------------------------------------------------------------------------------------------------------------------|-------------------|
| 场景 | 索引类型 |
| 人力资源部门经常使用员工的id查看员工信息。这可以为用户的id添加索引来提高查询效率 | 单字段索引 |
| 销售人员经常需要查看每个区域的销售情况。而区域是使用嵌入文档形式保存在数据库里的数据,包括多个字段,如城市,区县和邮编等。系统维护人员则可以在区域这个文档类型的字段上添加索引来提高查询性能。但用户在查询时,必须使用相同字段的文档作为过滤条件才可以使用到该索引 。 | 在嵌入是文档字段上创建的单字段索引 |
| 一个杂货铺老板,经常使用清点库存信息,需要使用商品名称和数量来查询数据。系统维护人员可以在商品名称和数量上添加索引来提高查询效率 | 复合索引 |

用户可以使用Mongodb Atlas, Mongodb shell和连接数据库的各种驱动以及客户端来创建索引。后续的文章中我们会介绍索引的创建方法。

索引结构

索引是保存了集合中部分数据的特殊数据结构。Mongodb使用B-tree这种数据结构来保存数据。很容易使用正序或者倒序来查询索引或通过索引来排序。索引保存了指定的字段值,并按照用户的指定的顺序进行排序。这种排序好的索引数据结构,能够方便的支持等值查询和区间查询。同时能够方便的支持排序。

默认索引

在集合创建的时候,Mongodb为_id字段建立的唯一索引。保证用户不会插入两个相同_id的文档。Mongodb不支持用户修改或删除默认索引。

索引的命名

索引默认使用字段名称和用户指定字段的排序方式来命名。使用下划线来区分字段名称和排序方式。例如在字段item和quantity上建立索引,其中item字段使用正序,而quantity字段倒序。{item: 1, quantity: -1}. 建立索引时,1表示正序,而-1表示倒序。则建立索引的默认名称是 item_1_quantity_-1.

索引建立后就无法重新命名,需要删除索引重建。

索引构建性能

在索引构建过程当中,应用和客户端性能可能会被索引的构建造成影响。包括限制对正在构建索引集合的读写等。

相关推荐
znnnk1 小时前
数据库被AI“重写”:2026,从CPU中心走向GPU中心
数据库·人工智能·oracle
微微%1 小时前
mysql的安装和使用
数据库·mysql·mysql8安装
软件派3 小时前
MiniMax M3.1 Flash 高频业务落地实战指南
大数据·数据库·人工智能
云边云科技_云网融合3 小时前
连锁门店组网怎么做?SD-WAN 多分支组网的架构选型、部署与成本结构
服务器·数据库·php
泡海椒4 小时前
# 深度解析JQuick-SQL Join重排序与哈希连接执行机制
数据库·sql·哈希算法
acrel74 小时前
医院用电隐患治理与节能降耗及智慧能源平台应用
网络·数据库
snow@li5 小时前
PowerDesigner 全景教程:从业务建模、表结构设计、关系管理到正向/逆向、文档输出
数据库
ss2735 小时前
PostgreSQL表级锁、行级锁、轻量级锁
数据库·postgresql·区块链
RacentCLM5 小时前
证书即服务CaaS:从申请、续期到部署的自动化链路拆解
运维·数据库·自动化·ssl
SelectDB5 小时前
安全评审卡了三周,我把部署形态的四种选项重新排了一遍
大数据·数据库·云原生