后端岗位面试题更新 2026-08-05

当一条 SELECT 语句的 WHERE 条件中的字段被函数包裹(例如 `WHERE aaa = 100` 改为 `WHERE aaa = CAST(100 AS INT)` 或类似情况)时,MySQL 还会使用索引吗?如果不使用,该如何改写才能让查询走索引?

菜鸟集团后端开发物流/供应链性能优化技术原理问题排查MySQL

考察说明

考察对 MySQL 索引失效典型场景的理解及 SQL 改写能力

回答思路

  1. 能指出索引建立在原始列上,对列进行函数运算或隐式类型转换会影响索引使用
  2. 能举例说明常见导致索引失效的情况,如对列用函数、类型不匹配等
  3. 能给出至少一种让查询走索引的改写方案,如避免对列函数化或调整参数类型
  4. 能意识到需要结合具体 EXPLAIN 结果验证是否走索引
本题已收录答题指导

本题附完整参考答案与评分标准

登录后可查看结构化答题指导;也可以直接开一场模拟面试,AI 面试官用本题实时追问并给出评分。