当前位置:  开发笔记 > 编程语言 > 正文

何时索引mongodb中的多个键

如何解决《何时索引mongodb中的多个键》经验,为你挑选了1个好方法。

说我有一个物品文件:price和:qty字段.我有时想要找到与给定匹配的所有文件:price AND:qty,而在其他时候它将是:价格本身或:qty本身.

我已经索引了:price和:qty键,但是我还需要在两者上创建复合索引,还是单键索引足够?

编辑:我在mongodb网站上发现这篇文章非常有用:

http://www.mongodb.org/display/DOCS/Indexing+Advice+and+FAQ



1> kristina..:

price帮助查询的索引price.qty帮助查询的索引qty.一个指数price,并qty与查询的帮助price和查询的priceqty.所以,就像以一个价格获得两个指数一样.但是,它对查询没有帮助qty.

您应该最小化索引的数量,因此删除一个单键索引并创建一个以该键开头的复合索引.

作为一般规则,如果你正在做一个查询x,yz,你应该有一个像指数{x:1, y:1, z:1}.此索引将快速执行以下查询:

db.foo.find({x : ..., y : ..., z : ...})
db.foo.find({x : ..., y : ...})
db.foo.find({x : ...})

它不会使这些查询快速:

db.foo.find({y : ..., z : ...})
db.foo.find({y : ...})

因此,请确保您的查询中包含索引的起始键.


自1.6+以来已经发生了变化,现在Mongo可以使用复合索引中的任何键:http://www.mongodb.org/display/DOCS/Indexes#Indexes-CompoundKeysIndexes
如果查询`db.foo.find({x:...,z:...})`,当查询中缺少中间索引键时,它会快速查询吗?
@Zsolt:在许多情况下是真的,但只有明确暗示.
推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有