假设您有以下集合:
{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] 删除。
我来说两句