MST

星途 面试题库

面试题:MongoDB复合索引在多字段查询中的应用

假设有一个集合students,包含字段name、age和score。现在需要频繁查询年龄大于特定值且分数在某一范围内的学生信息,如何创建合适的复合索引以提升查询性能?请说明索引创建的语法以及原因。
29.6万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试

索引创建语法(以MySQL为例)

CREATE INDEX idx_age_score ON students (age, score);

原因

  1. 最左前缀原则:复合索引在查询时遵循最左前缀原则。由于我们频繁查询年龄大于特定值且分数在某一范围内的学生信息,将age放在索引的第一列,当查询条件有age相关的过滤时,索引能有效发挥作用。
  2. 顺序影响:如果将score放在age前面,对于年龄大于特定值的查询,索引无法有效利用。而先按age过滤,再按score在范围内筛选,符合复合索引的使用规则,可以大大提升查询性能。