如果我有一个基于字段_id和CreationTimestamp.O查询的集合,如下所示:
var _query = Query.And(
Query.EQ("_id", "TheId"),
Query.GT("CreationTimestamp.0", DateTimeOffset.UtcNow.AddMinutes(-15).UtcTicks));
我应该在这两个字段上创建复合索引吗? 我知道_id默认有一个索引。
我正在寻找有关最佳做法的指导,即为两个字段创建复合索引,或者只为CreationTimestamp.O创建一个索引,因为它们已经是_id的索引
答案 0 :(得分:3)
这里创建复合索引并没有多大好处。由于_id
字段上自动处理索引的选择性为1(它是唯一索引),因此没有理由将任何复合索引作为前缀。唯一可能的好处可能是MongoDB可以使用covered index进行此查询,并可能加快速度(您需要对数据进行基准测试以证明这一点)。