MST

星途 面试题库

面试题:MySQL查询语句优化之避免SELECT * - 中等难度

假设有一个名为`employees`的表,包含`id`、`name`、`age`、`department`等多个字段。请写出一条查询语句,获取`department`为'HR'的员工的`id`和`name`字段,并解释为什么不建议使用`SELECT *`来实现此查询。
35.0万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试
SELECT id, name 
FROM employees 
WHERE department = 'HR';

不建议使用SELECT *来实现此查询,原因如下:

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