索引管理
索引是提升数据库查询性能的关键技术。通过为常用查询字段建立索引,可以显著提升查询速度和用户体验。
管理入口
- 访问控制台:进入 云开发平台
- 选择数据库:切换到 云开发平台/数据库/文档型
- 进入索引管理:选择目标集合,点击「索引管理」标签页
- 管理索引:新建、删除或修改索引配置

索引类型详解
单字段索引
适用场景:针对单个字段的查询和排序操作
特点说明:
- 支持嵌套字段索引,使用"点表示法"访问
- 可指定升序或降序排序
- 适合简单的单条件查询
示例配置:
// 原始数据结构
{
"_id": "product_001",
"name": "iPhone 15",
"price": 5999,
"style": {
"color": "深空黑",
"storage": "128GB"
}
}
索引配置示例:
| 字段路径 | 索引类型 | 排序方式 | 适用查询 |
|---|---|---|---|
name | 单字段 | 升序 | 按商品名称查询 |
price | 单字段 | 降序 | 按价格排序 |
style.color | 单字段 | 升序 | 按颜色筛选 |
💡 注意:嵌套字段使用点表示法,如
style.color表示访问 style 对象中的 color 字段。
组合索引
适用场景:多字段联合查询和复杂排序操作
核心概念:一个索引包含多个字段,支持前缀匹配查询
示例数据:
{
"_id": "student_001",
"name": "张三",
"age": 20,
"score": 85,
"class": "计算机科学"
}
索引前缀规则:
假设创建组合索引: name + age + score
| 索引前缀 | 能命中的查询组合 | 查询示例 |
|---|---|---|
name | 单独查询 name | db.collection('students').where({name: '张三'}) |
name, age | 查询 name + age | db.collection('students').where({name: '张三', age: 20}) |
name, age, score | 查询全部字段 | db.collection('students').where({name: '张三', age: 20, score: 85}) |
💡 前缀匹配原理
组合索引 (name, age, score) 的前缀包含:
- ✅
name- 可以命中索引 - ✅
name, age- 可以命中索引 - ✅
name, age, score- 可以命中索引 - ❌
age- 无法命中索引(不是前缀) - ❌
score- 无法命中索引(不是前缀) - ❌
age, score- 无法命中索引(不是前缀)
组合索引的重要特性:
🔄 1. 字段顺序的重要性
索引字段的顺序直接影响查询性能:
| 索引定义 | 能命中的查询 | 无法命中的查询 |
|---|---|---|
(name, age) | ✅ name 查询✅ name + age 查询 | ❌ 单独 age 查询❌ age + score 查询 |
(age, name) | ✅ age 查询✅ age + name 查询 | ❌ 单独 name 查询❌ name + score 查询 |