文档在这方面似乎有点不清楚。
1)复合索引确实提高了多字段排序(依赖于顺序和方向)的性能。
2)有一个短语让我认为它将也改善多场MACH (sql类比:其中a=1和b=2和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)上的三个单字段索引更好?
是的,创建复合索引可以提高查询性能。
如果所有查询都使用相同的单键,则创建单键索引
如果对于一个特定的集合,您使用单个键进行匹配,如where a=1
创建复合索引以支持多种不同的查询
如果您的查询使用一个或多个键,最好使用复合索引。
db.sample.createIndex( { "a": 1, "b": 1, "c":1 } )
您可以只查询a,也可以查询a与b的组合,还可以查询a, b和c。您可以使用explain()方法来了解您的查询使用的是哪个计划。
Index Intersection也可以优化查询的性能。它可以支持复合索引所不能支持的。