假设有一个订单表 order(MySQL,InnoDB 引擎),包含用户 ID、订单时间等字段。现在有三种查询需求:a. 查询某个用户的全部订单;b. 查询某一天的全部订单;c. 查询某个用户在某天的全部订单。请设计合理的索引方案,并说明理由。
考察说明
考察基于查询模式设计合适索引的能力,以及理解索引选择与回表、覆盖索引之间的关系
回答思路
- 能根据三种查询需求分别设计索引
- 针对需求 a 和 c 能考虑联合索引(用户ID, 订单时间)使得该索引同时支持用户级查询及用户+时间查询
- 针对需求 b 能考虑在订单时间上建立索引,并注意选择合适的索引选项
- 能说明选择联合索引的理由,避免回表或降低回表成本
- 能分析不同索引策略的取舍,例如是否满足覆盖索引、排序需求等
本题已收录答题指导
本题附完整参考答案与评分标准
登录后可查看结构化答题指导;也可以直接开一场模拟面试,AI 面试官用本题实时追问并给出评分。