索引基础 💡

索引是提升查询效率的利器,相当于数据库的「目录」。合理使用索引可以显著加速数据检索,但过度索引会增加写入开销。以下是关键知识点:

  • 索引类型:单字段索引、复合索引、唯一索引、地理空间索引等
  • 存储结构:B-Tree(默认)、哈希索引、文本索引
  • 使用场景:频繁查询字段、排序字段、范围查询字段
database_schema

设计原则 ✅

  1. 选择高频查询字段:对 find 条件中经常使用的字段建立索引
  2. 避免过度索引:每个索引都会占用存储空间并降低写性能
  3. 复合索引顺序:按查询条件的过滤强度排序,如 db.collection.find({a:1, b:1}) 应优先为 ab 创建复合索引
  4. 覆盖索引优化:确保索引包含查询所需所有字段,减少数据回表

优化技巧 🔍

  • 使用 explain() 分析查询计划,观察 winningPlanstage
  • text 类型字段使用全文索引(textIndex
  • 定期维护索引:通过 reIndex() 重建碎片化索引
  • 监控索引使用率:db.collection.stats() 中查看 indexUsage
index_structure

常见问题 ❓

  • Q: 复合索引如何选择字段顺序?
    A: 优先将选择性高的字段放在前面(如唯一字段或范围查询字段)。

  • Q: 索引是否会影响写入速度?
    A: 是的,每次写操作(插入/更新/删除)都会同步更新索引,建议根据业务场景权衡。

扩展阅读 📚

想深入了解索引性能调优?点击这里查看我们的实战教程,包含索引分析工具使用和案例解析。