MySQL select 查询避免使用 select *,三大核心弊端 新手编写 SQL 查询语句时习惯直接书写select * from table查询整张表所有字段写法简洁省力但在正式项目生产环境属于明确不推荐的写法不管是单表简单查询还是多表联查都建议手动指定需要查询的字段名称本文说明该规范背后的三点核心原因。第一多余字段增加网络 IO 与内存开销。数据表往往包含大文本字段、超长备注、创建更新时间、逻辑删除标识等不需要展示的字段select *会全部从磁盘读取并传输到应用服务数据量越大网络传输耗时与内存占用越高拖慢接口响应速度。只查询业务需要的列能显著缩小数据传输体积。第二无法使用覆盖索引优化查询。覆盖索引指查询字段全部包含在索引内直接从索引树获取数据不需要回表查询原数据表是 MySQL 极高效的优化手段。一旦使用 *索引无法囊括所有列必然触发回表索引优化直接失效。第三项目迭代极易引发程序报错。后续数据表新增字段如果使用 Mybatis 等持久层框架自动映射实体类实体未新增对应属性时程序会出现字段映射异常多表联查时字段重名还会出现数据互相覆盖问题。 正确写法示例sql-- 明确指定需要的字段selectid,username,phonefromsys_userwhereid101;可以在开发工具中使用数据库插件一键生成指定字段查询语句减少手动拼写工作量。这条 SQL 规范属于团队开发基础红线能规避大量后期维护问题与慢查询隐患。