Ubuntu下MongoDB索引优化方法
-
创建合适索引
- 为高频查询字段创建单字段索引,如
db.users.createIndex({ username: 1 })。 - 多条件查询使用复合索引,注意字段顺序(等值查询字段在前,范围查询在后),如
db.orders.createIndex({ customer_id: 1, order_date: -1 })。 - 全文搜索使用文本索引,如
db.articles.createIndex({ content: "text" })。
- 为高频查询字段创建单字段索引,如
-
优化索引使用
- 用
explain()分析查询计划,确保查询命中索引,避免全表扫描(COLLSCAN)。 - 覆盖索引:查询字段完全包含在索引中,减少回表查询。
- 用
-
索引维护
- 定期重建索引以减少碎片:
db.collection.reIndex()。 - 删除不再需要的索引,避免写操作开销。
- 定期重建索引以减少碎片:
-
查询优化配合
- 使用投影(
find({}, { field: 1 })减少返回字段。 - 分页查询用
skip()和limit(),避免一次性拉取大量数据。
- 使用投影(
参考来源:[1,2,3,4,5,6,7,8,9,10,11]