mysql不要使用select_SQL优化之 select * 不随便使用

本文探讨了在MySQL中不使用select *的原因,包括增加数据传输和网络开销、影响IO操作以及失去覆盖索引优化的机会。文章还介绍了联合索引的优势,强调了索引不是越多越好,并给出了优化查询的建议。
摘要由CSDN通过智能技术生成

我们都知道使用select * 的效率会降低,但大多数人都不知道如何去回答。

一、效率低的原因

1. 不需要的列会增加数据传输时间和网络开销

2. 对于无用的大字段,如 varchar、blob、text,会增加 io 操作

3. 失去MySQL优化器“覆盖索引”策略优化的可能性

二、索引知识延申

● 联合索引 (a,b,c)

● 联合索引的优势

1) 减少开销

2)覆盖索引

3)效率高

● 索引是建的越多越好吗

三、心得体会

一、效率低的原因

先看一下最新《阿里java开发手册(泰山版)文末有本书的下载链接》中 MySQL 部分描述:

4 - 1. 【强制】在表查询中,一律不要使用 * 作为查询的字段列表,需要哪些字段必须明确写明。

说明:

增加查询分析器解析成本。

增减字段容易与 resultMap 配置不一致。

无用字段增加网络 消耗,尤其是 text 类型的字段。

开发手册中比较概括的提到了几点原因,让我们深入一些看看:

1. 不需要的列会增加数据传输时间和网络开销

用“SELECT * ”数据库需要解析更多的对象、字段、权限、属性等相关内容,在 SQL 语句复杂,硬解析较多的情况下,会对数据库造成沉重的负担。

增大网络开销;* 有时会误带上如log、IconMD5之类的无用且大文本字段,数据传输size会几何增涨。如果DB和应用程序不在同一台机器,这种开销非常明显

即使 mysql 服务器和客户端是在同一台机器上,使用的协议还是

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值