MongoDB 索引全攻略

目录

一、索引介绍

        1.1 单字段索引

        1.2 复合索引

        1.3 多键索引

        1.4 主键索引

        1.5 TTL 索引

        1.6 地理空间索引

        1.7 哈希索引

        1.8 创建索引时注意事项

        1.9 索引效果查看

 二、索引实现原理

        2.1 为什么使用 B-Tree

三、执行计划


一、索引介绍

        任何数据库都有索引这一核心功能,索引通常能够极大的提高查询效率,如果没有索引,MongoDB 在读取数据时必须扫描集合中的每个文件,并选取那些符合查询条件的记录。

        这种扫描查询集合的查询方式效率非常低,特别在处理大量数据时。索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构。

        使用索引通常有如下的作用:

  • 加速查询:通过索引,数据库能够快速定位到符合条件的文档,避免全表扫描,大大减少查询响应时间。
  • 排序优化:索引可用于高效地对查询结果进行排序,无需在内存中对大量数据进行排序操作。
  • 覆盖查询:当索引包含了查询所需的所有字段时,数据库可以直接从索引中获取全部数据,无需访问文档本身,减少了磁盘 I/O。
  • 唯一性约束:创建唯一索引可以确保集合中指定字段的值唯一,防止插入重复数据。

        在 MongoDB 中有很多种索引,下面分别看下不同的索引。

        1.1 单字段索引

        在单个字段上建立的索引,对于单字段索引和排序操作,索引键的排序顺序无关紧要,因为MongoDB 可以在任意方向遍历。

// users 为 collection,创建 username 索引
db.users.createIndex({username: 1})

        

        1.2 复合索引

        多个字段的自定义索引,即复合索引。复合索引中的字段顺序很重要。例如,如果复合索引由{ userid: 1, score: -1} 组成,则索引首先按userid排序,然后在每个userid值内按score排序。在查询时可以按照userid:1,score:-1或者userid:-1,score:1查询,因为这两个顺序和树的组成顺序完全相同,相反执行userid:-1,score:-1将不会使用索引。

        1.3 多键索引

        MongoDB 使用多键索引来索引存储在数组中的内容。如果索引一个包含数组值的字段,MongoDB 会为数组的每个元素创建单独的索引条目。这些多键索引允许查询通过匹配数组的一个或多个元素来选择包含数组的文档。如果索引字段包含数组值,MongoDB 会自动判断是否创建多键索引;你不需要明确指定多键类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超越不平凡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值