| E | 等值条件字段优先 |
|---|---|
| S | 排序字段紧随其后 |
| R | 范围条件字段放最后 |
示例设计
示例设计
db.orders.createIndex({ status: 1, ts: -1, qty: 1 })
db.orders.find({ status: "paid", qty: { $gt: 5 } }).sort({ ts: -1 })复合索引天然支持“前缀”查询:{a:1,b:1} 能被仅查 a、或查 a+b 的语句利用。
复合索引按字段顺序生效:等值(Equality)字段在前、排序(Sort)字段居中、范围(Range)字段在后,能同时兼顾过滤与排序。
| E | 等值条件字段优先 |
|---|---|
| S | 排序字段紧随其后 |
| R | 范围条件字段放最后 |
db.orders.createIndex({ status: 1, ts: -1, qty: 1 })
db.orders.find({ status: "paid", qty: { $gt: 5 } }).sort({ ts: -1 })