我要索引的文档中有两个字段。其中之一是接收时间,另一个是序列号。我希望用户能够单独查询序列号或同时查询序列号和接收时间。
在我看来,我有两个选择。
一个。
db.collection.ensureIndex({SerialNumber: 1, ReceiveTime: 1})
db.collection.ensureIndex({ReceiveTime: 1})
B.
db.collection.ensureIndex({ReceiveTime: 1, SerialNumber: 1})
db.collection.ensureIndex({SerialNumber: 1})
显然,与选项 B 相比,选项 A 是更好的选择(您希望稍后在索引中出现唯一性较低的字段)。为什么会这样?
但是,同时 MongoDB 文档指出,如果您的索引增加,则整个索引不需要适合 RAM。如果这是一个写入量很大的应用程序,那么 B 会是更好的选择吗?(复合索引大于单个索引,复合索引递增,而不是 A 不递增)