Skip to content

面试速答(先看这里)

**一句话结论:**在性能上差别也不大,虽然有人说用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」:底层原理是什么?使用时有哪些边界和常见坑?
  • 如果线上出现异常,你会如何定位、验证并规避?

典型回答 ​

这个问题是下面这个问题的扩展:

📄 ✅为什么要尽量避免使用select * ?

打开文档:✅为什么要尽量避免使用select * ?

如果,在当前表只有字段 a, b, c 时,这两个查询语句的查询结果是一致的。

在性能上差别也不大,虽然有人说用select * 会带来一次额外的字段映射和转换开销,但是当对于只有a,b,c三个字段的情况下,这个开销几乎可以忽略。

那么如果非要说区别的话,主要是明确性方面,**SELECT a, b, c**明确指定了字段,代码更加清晰,而且他不受后期的表结构(增删字段)变化的影响。而**SELECT ***不够明确, 对表结构的变化,更加敏感