发布时间:2022-08-18 18:38
面试官:“小陈,说一下你常用的 SQL 优化方式吧。”
陈小哈:“那很多啊,比如不要用 SELECT *,查询效率低。巴拉巴拉...”
面试官:“为什么不要用 SELECT * ?它在哪些情况下效率低呢?”
陈小哈:“SELECT * 它好像比写指定列名多一次全表查询吧,还多查了一些无用的字段。”
面试官:“嗯...”
陈小哈:“emmm~ 没了”
陈小哈:“....??(几个意思)”
面试官:“嗯...好,那你还有什么要问我的么?”
陈小哈:“我问你个锤子,把老子简历还我!”
废话不多说,本文带你深入了解一下"SELECT * "效率低的原因及场景。
效率低的原因
先看一下最新《阿里 Java 开发手册(泰山版)》中 MySQL 部分描述:
4 - 1. 【强制】在表查询中,一律不要使用 * 作为查询的字段列表,需要哪些字段必须明确写明。
说明:
增加查询分析器解析成本。
增减字段容易与 resultMap 配置不一致。
无用字段增加网络 消耗,尤其是 text 类型的字段。