索引基础 💡
索引是提升查询效率的利器,相当于数据库的「目录」。合理使用索引可以显著加速数据检索,但过度索引会增加写入开销。以下是关键知识点:
- 索引类型:单字段索引、复合索引、唯一索引、地理空间索引等
- 存储结构:B-Tree(默认)、哈希索引、文本索引
- 使用场景:频繁查询字段、排序字段、范围查询字段
设计原则 ✅
- 选择高频查询字段:对
find
条件中经常使用的字段建立索引 - 避免过度索引:每个索引都会占用存储空间并降低写性能
- 复合索引顺序:按查询条件的过滤强度排序,如
db.collection.find({a:1, b:1})
应优先为a
和b
创建复合索引 - 覆盖索引优化:确保索引包含查询所需所有字段,减少数据回表
优化技巧 🔍
- 使用
explain()
分析查询计划,观察winningPlan
和stage
- 对
text
类型字段使用全文索引(textIndex
) - 定期维护索引:通过
reIndex()
重建碎片化索引 - 监控索引使用率:
db.collection.stats()
中查看indexUsage
常见问题 ❓
Q: 复合索引如何选择字段顺序?
A: 优先将选择性高的字段放在前面(如唯一字段或范围查询字段)。Q: 索引是否会影响写入速度?
A: 是的,每次写操作(插入/更新/删除)都会同步更新索引,建议根据业务场景权衡。
扩展阅读 📚
想深入了解索引性能调优?点击这里查看我们的实战教程,包含索引分析工具使用和案例解析。