MongoDB 复合索引 (Compound Index) 是指一个索引结构中包含多个字段。它是 MongoDB 性能优化的核心工具之一。 相比于单字段索引,复合索引可以同时支持多个字段的查询、排序和范围查找,但其设计需要遵循特定的规则。 以下是关于复合索引的详细指南,包括原理、最佳实践(ESR 规则)和常见陷阱。 --- 1. 基本语法 创建复合索引时,需要指定包含的字段及其排序方向(1 为升序,-1 为降序)。 : 首先按照 字段升序排列。 : 在 相同的情况下,按照 字段降序排列。 --- 2. 核心概念 A. 字段顺序至关重要 (Field Order) 复合索引中字段的顺序决定了索引的结构。 例子: 索引 结构: 数据首先按 排序;只有当 的值相同时,才按 排序。 影响: 如果你的查询是 ,这个索引是无效的,因为你跳过了 。 B. 索引前缀 (Index Prefixes) MongoDB 可以使用复合索引的“前缀”来支持查询。 假设索引为: 支持的查询: 不支持的查询 (无法利用索引): (跳过了头部) C. 排序方向 (Sort Order) 对于单字段索引,排序方...