《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 字段。

相关推荐
星辰_mya3 分钟前
redis集群
数据库·redis·缓存
编程小Y26 分钟前
MySQL原理
数据库·mysql
小石头 100861 小时前
MySQL 视图:把复杂变简单的“虚拟化”艺术
数据库·mysql
安当加密1 小时前
PostgreSQL 透明数据加密(TDE)方案与应用场景详解
数据库·postgresql
怪我冷i1 小时前
dbeaver如何连接PostgreSQL数据库
数据库·ai编程·ai写作
QH_ShareHub2 小时前
如何使用 NHANES 数据库
数据库
wuhen_n2 小时前
系统架构设计师(三):数据库系统
数据库·系统架构
DB虚空行者2 小时前
MySQL误删/批量更新数据恢复实战:基于Flashback工具的完整方案
数据库·mysql
IvorySQL2 小时前
外键的本质竟然是触发器?深入解析 PostgreSQL 约束底层
数据库·postgresql·开源
九皇叔叔2 小时前
MySQL Next-Key Lock 锁表事故全拆解(从现象到根治)
数据库·mysql