说我有一个物品文件:price和:qty字段.我有时想要找到与给定匹配的所有文件:price AND:qty,而在其他时候它将是:价格本身或:qty本身.
我已经索引了:price和:qty键,但是我还需要在两者上创建复合索引,还是单键索引足够?
编辑:我在mongodb网站上发现这篇文章非常有用:
http://www.mongodb.org/display/DOCS/Indexing+Advice+and+FAQ
price
帮助查询的索引price
.qty
帮助查询的索引qty
.一个指数price
,并qty
与查询的帮助price
和查询的price
和qty
.所以,就像以一个价格获得两个指数一样.但是,它对查询没有帮助qty
.
您应该最小化索引的数量,因此删除一个单键索引并创建一个以该键开头的复合索引.
作为一般规则,如果你正在做一个查询x
,y
和z
,你应该有一个像指数{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 : ...})
因此,请确保您的查询中包含索引的起始键.