当一条 SELECT 语句的 WHERE 条件中的字段被函数包裹(例如 `WHERE aaa = 100` 改为 `WHERE aaa = CAST(100 AS INT)` 或类似情况)时,MySQL 还会使用索引吗?如果不使用,该如何改写才能让查询走索引?
考察说明
考察对 MySQL 索引失效典型场景的理解及 SQL 改写能力
回答思路
- 能指出索引建立在原始列上,对列进行函数运算或隐式类型转换会影响索引使用
- 能举例说明常见导致索引失效的情况,如对列用函数、类型不匹配等
- 能给出至少一种让查询走索引的改写方案,如避免对列函数化或调整参数类型
- 能意识到需要结合具体 EXPLAIN 结果验证是否走索引
本题已收录答题指导
本题附完整参考答案与评分标准
登录后可查看结构化答题指导;也可以直接开一场模拟面试,AI 面试官用本题实时追问并给出评分。