《MySQL》第十三篇 SELECT * 和 SELECT 字段名的区别

在实际开发中,进行数据查询的SQL无非有两种写法,使用SELECT * from tableName或者SELECT 字段名(多个) from tableName,二者各有利弊

SELECT * 写法

优点:

  1. 写法简单,不需要手动输入具体的字段,一定程度上减少代码量,需要查询的字段用一个*号就能替代
  2. 不需要关注表的字段名称,一定程度上避免繁琐的字段名输入和错误输入的情况发生
  3. 在不考虑查询条件的影响下,无需考虑表结构字段的增减;无需对SQL语句进行修改,一定程度上可以提高代码的复用率

缺点:

  1. SELECT * 表示查询表中所有字段,在执行SQL时,MySQL的词法分析器会通过Bison将 * 号解析为数据库表的全部字段,相比select 字段来说,多一步解析操作,效率上比select 字段 要低一些
  2. 由于查询了表所有字段,MySQL会全表扫描,查询的结果中会存在大量不需要的字段信息,增加网络传输的开销,降低查询的效率
  3. 会导致覆盖索引失效,使用select * ,不可能给所有字段创建一个覆盖索引,即使使用到已有的覆盖索引,也需要进行回表查找;

SELECT 字段

优点:

  1. 可以根据需要,有目的性的选择查询字段,可避免冗余字段的产生,提高查询效率,降低网络传输的开销
  2. 能更好的进行SQL优化;当执行select 字段 语句时,由于数据库数据较多,查询效率低,可能根据查询的字段,建立联合索引,提升查询效率;而select * 不好创建联合索引

缺点:

  1. 受到表结构变化带来的影响;在增删表字段时,SQL可能也需要同步修改;否则新增的字段查询不出,删除的字段,执行SQL会报错
  2. 需要手动的将表字段全部罗列处理,如果表字段很多时,耗费时间

不同的写法,可以满足不同的场景。在实际应用中,需要根据具体情况选择合适的写法。如果需要查询所有字段,可以使用 SELECT *。如果需要精确控制查询的字段,可以使用 SELECT 字段。

相关推荐
qq_206901393 小时前
CSS如何引入自适应图标_利用svg外链配合css控制颜色
jvm·数据库·python
weixin_408717773 小时前
Go语言怎么编译Linux程序_Go语言编译Linux可执行文件教程【避坑】
jvm·数据库·python
APIshop4 小时前
Python 爬虫获取京东商品详情 API 接口实战指南
java·服务器·数据库
XmasWu12254 小时前
【Hermes Agent进阶】开发自定义技能
网络·数据库
刘~浪地球4 小时前
数据库性能优化实战
数据库·性能优化
2401_865439634 小时前
CSS怎么在flex布局中实现项目均分间距_设置justify-content space-evenly
jvm·数据库·python
m0_493934534 小时前
CSS如何实现输入框禁用样式_使用-disabled伪类设定
jvm·数据库·python
m0_716430074 小时前
如何用 classList.toggle 实现侧边栏菜单的点击展开与收起
jvm·数据库·python
爪洼传承人4 小时前
AI工具MCP的配置,慢sql优化
android·数据库·sql
Aloudata4 小时前
PL/SQL 存储过程血缘解析指南:攻克数据治理的「最后堡垒」
数据库·sql·数据治理·数据管理·元数据·数据血缘