如果我在一个字段上同时具有简单索引和复合索引,那么在包含该字段的查询中使用哪一个?

Posted

技术标签:

【中文标题】如果我在一个字段上同时具有简单索引和复合索引,那么在包含该字段的查询中使用哪一个?【英文标题】:If I have both simple and compound index on a field, which one gets used in queries containing that field? 【发布时间】:2021-12-29 02:08:07 【问题描述】:

我的 mongo 文档中有一个字段“productLowerCase”。我创建了 2 个索引

1. simple
   "productLowerCase" : 1
2. compound
   "productLowerCase" : 1, "timestamp.milliseconds" : -1

所以如果我运行一个只有 productLowerCase 的查询,说:

db.coll.find("productLowerCase" : $regex : /^cap/)

将使用哪个索引?

【问题讨论】:

【参考方案1】:

在这种情况下,mongo 将使用"productLowerCase" : 1 这个索引,但是你可以删除这个索引,因为如果你有复合索引,你可以使用第一个字段进行搜索而不会损失性能。

除此之外,您还可以使用explain() 来解释您的查询。

【讨论】:

以上是关于如果我在一个字段上同时具有简单索引和复合索引,那么在包含该字段的查询中使用哪一个?的主要内容,如果未能解决你的问题,请参考以下文章

sql server 2005 一个索引多个字段,字段的排列顺序对搜索有啥影响??

具有三个键的复合索引,如果我查询跳过中间一个会发​​生啥?

MYSQL:复合索引比单独索引有什么好处?

MongoDB 复合索引与单字段索引在空间消耗方面的对比

MongoDB索引

关于MySQL复合索引的使用方法有哪些?