Mongodb:使用排序键作为复合索引的一部分还是在它自己的索引中?

客厅

假设您有以下集合:

{name: 'john', occupation: 'engineer', country: 'UK', age: 20},
{name: 'allan', occupation: 'teacher', country: 'US', age: 25},
...

并且您需要找到一些人(例如所有名为 Kevin 的毒贩)并按年龄对他们进行排序:

collection.find({name: 'kevin', occupation: 'drug-dealer'}).sort({age: -1})

稍后您可能会执行不同的查询,在其中找到所有毒贩(无论他们的名字)并按年龄对他们进行排序:

collection.find({occupation: 'drug-dealer'}).sort({age: -1})

对“年龄”有一个单独的索引还是让它成为几个复合索引的一部分会更好吗?

部分复合指数:

{occupation: 1, age: 1}
{name: 1, occupation: 1, age:1}

单独索引:

{occupation: 1}
{name: 1, occupation: 1}
{age: 1}

什么会产生最好的性能?每个的优点和缺点是什么?

德克斯特

复合索引就可以了。由于您在查询中运行 sort,请确保以正确的顺序构建复合索引,以便您的查询不仅可以利用索引来过滤文档,还可以对它们进行排序。否则 mongodb 将执行效率不高的内存中排序,并且限制为 32 MB

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Entity Framework Core:使用自动生成的外键作为复合主键的一部分

外键索引可以是另一个索引的一部分还是应该是独立的?

我将如何为作为 cloudant nosql 中数组一部分的元素创建索引?

索引数组的一部分

使用Windows键作为Visual Studio 2017中键盘快捷键的一部分

JPA如何使复合外键成为复合主键的一部分

pyomo:如何僅在集合的一部分中索引變量?

SQLite中列的一部分上的索引

在Java中的索引之间替换字符串的一部分

获取包含在字符向量中的名称的一部分字符的索引

定义列系列的一部分以在熊猫中建立索引

React TypeScript:如何使用变量名作为键的一部分

使用日期时间索引的一部分联接数据框

使用索引替换2D numpy数组的一部分

使用变量作为语句的一部分

如何使用Entity Framework 6将单个属性映射为多个复合外键的一部分?

回送是否将数据库的索引作为元数据的一部分提供?

如果某些文档没有作为索引一部分的字段怎么办?

关于外键中的列的Android Room编译时警告不是索引的一部分。这是什么意思?

Classloader是JVM的一部分还是JRE的一部分?

如何使用 Pandas 为与多部分索引的一部分匹配的所有行设置值

使用单元格中的值作为图纸参考的一部分

使用“for 循环”中的 i 作为变量的一部分

是否可以在MongoDB地图功能中包含地图集合名称的名称作为键的一部分?

实体框架:外键作为组合键的一部分

将鉴别符列添加为Entity Framework中唯一索引的一部分

Dataweave-使用另一个键作为keyName一部分的选择器

TSQL不使用动态管理功能查看列是否为唯一索引的一部分

Gradle:您如何将自己的库作为构建的一部分?