什么是索引

索引是一种单独的、物理的数据结构,对数据库表中一列或多列的值进行排序存储。

索引的作用机制

  • 快速定位到特定值的记录
  • 避免全表扫描
  • 大大提高查询效率

索引类型详解

1. 单键索引(Single Field Index)

db.users.createIndex({"username": 1})

TTL索引

db.logs.createIndex({"createdAt": 1}, {expireAfterSeconds: 3600})

2. 复合索引(Compound Index)

复合索引遵循最左前缀原则

db.collection.createIndex({ "field1": 1, "field2": -1 })

3. 多键索引(Multikey Index)

专门用于优化对数组字段的查询:

db.products.createIndex({tags: 1})

4. 地理索引(Geospatial Index)

  • 2dsphere 索引:用于球面地理坐标
  • 2d 索引:用于平面坐标

5. 全文索引(Text Index)

db.collection.createIndex({"content": "text"})

6. 哈希索引(Hashed Index)

db.users.createIndex({"username": "hashed"})

哈希索引仅支持精确匹配查询,不支持范围查询。

MongoDB默认索引

MongoDB在集合创建时会自动为_id字段创建唯一索引。