面试题答案
一键面试SELECT id, name
FROM employees
WHERE department = 'HR';
不建议使用SELECT *
来实现此查询,原因如下:
- 增加网络开销:
SELECT *
会检索表中的所有列,包括不必要的列。这会增加从数据库服务器传输到应用程序的数据量,尤其是在有大字段(如文本、二进制数据等)的情况下,从而增加网络带宽的消耗,降低查询性能。 - 降低查询灵活性:使用
SELECT *
,当表结构发生变化(例如增加或删除列)时,应用程序可能会受到影响。因为返回的列顺序或数量发生改变,可能导致应用程序在解析结果集时出错。而明确指定需要的列id
和name
,则不受表结构变化的影响,除非这两个列被删除。 - 影响可读性和维护性:明确指定列名使查询意图更清晰,其他开发人员能一目了然知道需要哪些数据。而
SELECT *
在阅读和维护代码时,需要去查看表结构才能知道具体返回哪些数据,不利于代码的理解和后续维护。