MongoDB布尔字段复合索引方向选择技术咨询
选第一个索引:
{ my_boolean_field: 1, my_timestamp_field: -1 } 直接说清楚原因:
- 布尔字段的方向不影响本次查询性能:你是精确匹配
my_boolean_field: false,而布尔值只有两种可能,不管索引里布尔字段设为升序(1)还是降序(-1),MongoDB都能快速定位到所有符合条件的文档区间,这一步没有性能差异。 - 时间戳字段的方向是核心优化点:你的查询要求结果按时间逆序排列,把
my_timestamp_field设为-1(降序)后,索引内所有my_boolean_field: false的文档已经是按时间从新到旧排好序的。MongoDB筛选出时间在近期的文档后,直接就能返回结果,不需要额外执行排序操作——这对百万级文档集合来说,能大幅节省内存和CPU开销。 - 布尔字段用升序更符合常规设计:用1作为布尔字段的索引方向是默认的常规做法,后续如果有其他涉及该字段的查询需求,这个索引也能兼容,没必要特意设置为降序。
第二个索引虽然也能满足查询需求,但布尔字段设为-1没有任何性能增益,还不符合常规索引设计习惯,因此优先选择第一个方案。
内容的提问来源于stack exchange,提问作者Alexandre FILLATRE
相关产品推荐
相关产品推荐

