为什么总是说不能用select *呢

相信很多开发小伙伴在入行以后,都会听到项目经理或开发组长强调:sql脚本中避免使用select *哈 。 曾经我也一样,当经理说起sql中尽量不要使用select * 的时候,内心不以为然,直到有一天被现实打脸真正吃了亏。虽然也知道不让用的几个大概原因,但依然是我行我素。看看手里的项目,心想,毕竟前辈们敲的代码里也不乏有select *的存在,不是到现在也运行的好好的,也没出现什么问题嘛。

自己去问百度为什么不能用的时候,通常是就是那么几点:

1. select * 属于全表扫描,不利于提高查询效率。

2. 如果本身只需要使用表中的几个字段,全量查询增大了使查询结果集,占用更多的数据库内存,增加数据库负担,甚至出现内存溢出。

3. 除了对数据库增加了压力,对应用程序和网络也增加了压力。

百度之后反而更放心了,项目小、数据量小,不怕!后面一段时间我是正手一个select * ,反手一个select *的敲着代码,毕竟省时省力嘛。

直到有一天被现实打了脸。。。。

事情是这样的,某天,系统使用人员突然反馈说:某某页面查询不出数据了。于是我开始了一顿排查,自信的我相信代码一定没问题,必定是数据的问题,于是去检查数据。一番周折后,还是老老实实检查代码吧(有没有类似的经历呢?),代码逻辑也正确,查询sql我近期也没动过。最后发现竟是我的select * 导致了这一场风波。

我的页面查询了A、B两表,大概如下:

SELECT * FROM (SELECT A.* ,B.AGE ,B.NAME,B.CLASS_ID) RS

  而同事在另一个需求开发中也用到了A表,由于剧情需要,同事就在A表中增加了一个CLASS_ID字段,这时我的查询sql就报错了。原因是A、B两表同时有CLASS_ID字段,因此在外层的SELECT查询的时候,会查出两个CLASS_ID,数据库此时会报错“未明确定义列”。说到这里你懂了吗?

当你为使用了select * 而感到高兴的时候,未来增加或删除的一个字段就有可能会让你怀疑人生

所以,看完这篇文章,开始养成良好的代码习惯吧

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值