以下是一些优化 MongoDB 复杂查询性能的方法:
一、索引优化
-
合理创建索引
- 单字段索引:对于经常在查询条件、排序或分组操作中使用的字段,创建单字段索引。例如,如果经常根据
category
字段查询商品集合,如db.products.find({category: "electronics"})
,可以在category
字段上创建索引:db.products.createIndex({category: 1})
。这里的1
表示升序索引,-1
表示降序索引。 - 复合索引:当查询涉及多个字段时,考虑创建复合索引。比如,经常查询特定类别且价格在一定区间的商品,如
db.products.find({category: "electronics", price: {$gte: 100, $lte: 500}})
,可以创建复合索引db.products.createIndex({category: 1, price: 1})
。复合索引的字段顺序很重要,应该按照查询条件中字段的使用频率和选择性从高到低排列。 - 索引的选择性:选择性高的字段作为索引的前缀更有效。例如,在一个用户集合中,如果
email
字段是唯一的(选择性高),而gender
字段只有两种值(选择性低),对于查询db.users.f
- 单字段索引:对于经常在查询条件、排序或分组操作中使用的字段,创建单字段索引。例如,如果经常根据