主题
面试速答(先看这里)
**一句话结论:**在性能上差别也不大,虽然有人说用select * 会带来一次额外的字段映射和转换开销,但是当对于只有a,b,c三个字段的情况下,这个开销几乎可以忽略。
60秒标准回答:
这个问题是下面这个问题的扩展
如果,在当前表只有字段 a, b, c 时,这两个查询语句的 查询结果是一致的
在性能上差别也不大,虽然有人说用select * 会带来一次额外的字段映射和转换开销,但是当对于只有a,b,c三个字段的情况下,这个开销几乎可以忽略
**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点
回答主线:
- **要点1:**如果,在当前表只有字段 a, b, c 时,这两个查询语句的 查询结果是一致的 。
- **要点2:**那么如果非要说区别的话,主要是明确性方面, SELECT a, b, c 明确指定了字段,代码更加清晰,而且他不受后期的表结构(增删字段)变化的影响。
**记忆锚点:**select → SELECT → SELECT a b c → 且他不受后期的表结构 → SELECT * → 三个字段
关键取舍:
- 在性能上差别也不大,虽然有人说用select * 会带来一次额外的字段映射和转换开销,但是当对于只有a,b,c三个字段的情况下,这个开销几乎可以忽略。
加分表达:
- 这个问题是下面这个问题的扩展: 如果,在当前表只有字段 a, b, c 时,这两个查询语句的 查询结果是一致的 。
- 那么如果非要说区别的话,主要是明确性方面, SELECT a, b, c 明确指定了字段,代码更加清晰,而且他不受后期的表结构(增删字段)变化的影响。
追问准备:
- 围绕「select」:底层原理是什么?使用时有哪些边界和常见坑?
- 围绕「SELECT」:底层原理是什么?使用时有哪些边界和常见坑?
- 围绕「SELECT a b c」:底层原理是什么?使用时有哪些边界和常见坑?
- 如果线上出现异常,你会如何定位、验证并规避?
典型回答
这个问题是下面这个问题的扩展:
如果,在当前表只有字段 a, b, c 时,这两个查询语句的查询结果是一致的。
在性能上差别也不大,虽然有人说用select * 会带来一次额外的字段映射和转换开销,但是当对于只有a,b,c三个字段的情况下,这个开销几乎可以忽略。
那么如果非要说区别的话,主要是明确性方面,**SELECT a, b, c**明确指定了字段,代码更加清晰,而且他不受后期的表结构(增删字段)变化的影响。而**SELECT ***不够明确, 对表结构的变化,更加敏感