开源框架:MongoDB—索引知识
简介:
MongoDB索引通过B-Tree结构提升查询效率,避免全表扫描。支持单字段、复合、地理空间、文本及哈希索引,适用于等值、范围、文本搜索及分片场景,显著优化数据检索性能。
一、索引概述
1. 核心作用
- 提升查询效率:避免全集合扫描(无需遍历所有文档),尤其适用于大量数据场景,减少查询耗时。
- 支持高效操作:通过有序存储字段值,实现快速相等匹配、范围查询,且可直接利用索引排序返回结果。
2. 本质与数据结构
- 索引是特殊数据结构,存储集合中特定字段(或字段组)的值并按规则排序,仅保留数据集的一小部分,便于快速遍历。
- MongoDB 索引采用 B-Tree 数据结构(与 MySQL 的 B+Tree 不同)。
3. 官网参考
二、索引类型
1. 单字段索引(Single Field Index)
- 定义:在文档的单个字段上创建的升序(1)或降序(-1)索引。
- 关键特点:索引键的排序顺序(升序 / 降序)不影响查询效果,MongoDB 可双向遍历索引。
2. 复合索引(Compound Index)
- 定义:基于多个字段创建的索引,字段顺序对查询效果至关重要。
- 排序逻辑:先按第一个字段排序,再在该字段的每个值范围内,按第二个字段排序,以此类推。
- 示例:索引
{ userid: 1, score: -1 } 表示先按 userid 正序排序,再在同一 userid 下按 score 倒序排序。
3. 其他特殊索引
(1)地理空间索引(Geospatial Index)
- 二维索引:返回结果基于平面几何。
- 二维球面索引:返回结果基于球面几何。
(2)文本索引(Text Indexes)
- 用途:支持集合中字符串内容的搜索。
- 特性:自动过滤语言相关停止词(如 “the”“a”“or”),仅存储词干(根词),优化搜索效率。
(3)哈希索引(Hashed Indexes)
- 用途:主要支持基于散列的分片场景。
- 特性:对字段值进行散列后索引,值分布更随机;仅支持相等匹配查询,不支持范围查询。