【问题标题】:Mongodb: Use sort key as part of compound index or in its own index?Mongodb:使用排序键作为复合索引的一部分还是在它自己的索引中?
【发布时间】:2019-12-31 03:36:14
【问题描述】:

假设您有以下收藏:

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

你需要找到一些人(例如所有名叫凯文的毒贩)并按照他们的年龄对他们进行排序:

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}

什么会产生最佳性能?各有什么优缺点?

【问题讨论】:

标签: mongodb indexing indices


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多