什么是索引?
索引是提升数据库查询效率的利器,类似于书籍目录。合理使用索引可将查询速度提升10-1000倍!
索引优化策略 ✅
选择性索引
- 对唯一值字段(如
_id
)建索引 - 避免对低选择性字段(如
status: 1
)过度索引 - 使用
explain()
分析查询计划
- 对唯一值字段(如
复合索引技巧
- 字段顺序影响性能:按查询频率排序
- 用
$orderby
指定排序方向 - 避免索引字段过多(通常不超过5个)
索引类型选择
B-tree
:适用于范围查询、排序(默认类型)Hash
:适合等值查询(如find({x: 1})
)Text
:全文搜索场景Geospatial
:地理空间查询
常见误区 ⚠️
- ❌ 未定期清理冗余索引
- ❌ 忽略索引字段的数据分布
- ❌ 在写密集型场景过度使用索引
- ❌ 未验证索引有效性(
hint()
工具可辅助)
扩展阅读 📚
最佳实践 🛠️
- 使用
db.collection.stats()
监控索引使用率 - 对高频查询字段优先建索引
- 定期执行
reIndex()
优化数据分布 - 通过
explain()
分析查询计划中的IXSCAN
操作