什么是索引
索引是一种单独的、物理的数据结构,对数据库表中一列或多列的值进行排序存储。
索引的作用机制
- 快速定位到特定值的记录
- 避免全表扫描
- 大大提高查询效率
索引类型详解
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字段创建唯一索引。