【数据库】 为什么不推荐使用select * 进行查询?

之前没有了解过这个问题,结果就在面试中遇到了,没有回答好,所以还是多多总结!

select * 会降低效率吗? 是的!

原因:

  1. 多取了不需要的列: 毋庸置疑,使用 * 查询时,会把所有的列都查询出来,会查找出来好多我们并不需要的列,在SQL语句复杂等情况下查询的成本就比较高,内存和CPU的消耗也比较大。
  2. 杜绝了覆盖索引的可能: 覆盖索引是效率很高很推荐的查询方式,而使用select * 就表示肯定用不到覆盖索引。
  3. 增加传输时间和网络开销: 使用select * 多查找出来的数据,会增加数据传输的时间,尤其是一些很大的类型比如log或者MD5,即使 mysql 服务器和客户端是在同一台机器上,使用的协议还是 tcp,通信也是需要额外的时间。
  4. 增加了IO次数: 如果表中存在字段是大字段例如text、varchar等,当字段超过728字节后,就会把超出的数据放到另一个地方,在查询结果读取时,就会增加IO操作
  5. 改变表结构时可能出现错误: 使用 SELECT * 需谨慎,因为一旦列的个数或顺序更改,就有可能程序执行失败

关于索引的其它知识还可以看我的其它文章:
一条SQL语句为什么执行这么慢?
数据库 重点知识复习总结
关于MySQL索引的基础知识

参考文献:
https://www.jianshu.com/p/2ffd8d806109
https://www.zhihu.com/question/37777220
文章有什么问题或者大家有什么想要补充的欢迎留言,也欢迎小伙伴们点赞关注一起进步!

你可能感兴趣的:(数据库)