1

文档似乎有点不清楚。

1)它明确指出复合索引确实提高了多字段排序的性能(依赖于顺序和方向)。

2)有一句话让我觉得它也会提高多字段MACH(sql类比:a=1 and b=2 and c<5)

https://docs.mongodb.org/v3.0/tutorial/optimize-query-performance-with-indexes-and-projections/

如果查询搜索多个字段,请创建复合索引。

它没有说明排序。

那么字段 a、b、c 的复合索引是否比三个单字段索引(其中 a=1 和 b=2 和 c<5)的查询更适合匹配性能?

4

1 回答 1

3

是的,创建复合索引可以提高查询性能。

如果所有查询都使用相同的单键,则创建单键索引

如果对于特定集合,您使用单个键进行匹配,例如where a=1

创建复合索引以支持多个不同的查询

如果您的查询使用一个或多个键,最好使用复合索引。

db.sample.createIndex( { "a": 1, "b": 1, "c":1 } )

可以只查询a,可以查询a和b的组合,也可以查询a、b和c。您可以使用 explain() 方法来了解您的查询正在使用什么计划。

Index Intersection还可以优化查询的性能。它可以支持复合索引无法支持的内容。

于 2015-08-16T11:47:01.727 回答