首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在一起查询和‘s和OR's一起查询时,如何在Mongo中创建索引?

在一起查询和‘s和OR's一起查询时,如何在Mongo中创建索引?
EN

Stack Overflow用户
提问于 2021-12-23 16:05:34
回答 1查看 321关注 0票数 1

我只读过这样的或查询,例如:

代码语言:javascript
复制
find($or [{field1:a}, {field2:b}])

应为每个字段创建索引(以字段作为前缀的简单或复合索引)。查询如下:

代码语言:javascript
复制
find(field1:a, field2:b)

应建立一个复合索引,以全面覆盖该指数。但是,当查询有和‘s和OR在一起时,该怎么办?

代码语言:javascript
复制
find($or[field1:a, field2:b], field3:c, field4:d)

在这种情况下,要创建的所有索引是什么?

MongoDB 4.4.6

EN

回答 1

Stack Overflow用户

发布于 2021-12-23 23:13:16

TL;DR:这里可能不需要复合索引,而是在基数最高、性能要求最高的查询上使用单独的字段索引。

当您的和模式是可预测的层次结构时,复合索引非常有用。如果在字段A、B、C上创建复合索引,则对A的查询将是快速的,A、B将是快速的,而A、B、C将是(真的)快速的。对B的查询不能使用索引,也不能使用B、C或C。

如果您使用explain(true)运行查询并检查输出,您将看到可以为$or$and类型的查询使用多个索引。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70464631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档