文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

不用select的原因有哪些

2024-04-02 19:55

关注

这篇文章主要讲解了“不用select的原因有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“不用select的原因有哪些”吧!

第一宗罪:不必要的 IO

这会导致 DBMS 读取所有的数据 pages,但是这些数据你又不用,在后来的 SQL  中又可能被过滤掉了或者是直接没用,但是读取数据是需要成本的,尤其大字段,例如 blob,text。

select colunm_a,column_b(select * from XXX) tmp

第二宗罪:增加了网络负担

读取更多的数据意味着返回更多的数据给客户端,这就是意味着要占用更多的网络带宽。

第三宗罪:占用了更多内存

因为读取了多余的数据,你的程序需要更多的内存去存储这些数据,这意味着你将会使用珍贵的内存资源去存储这些不必要的数据。

第四宗罪:对 ResultSet 上列顺序的依赖

如果你用了 select * 在你的程序中,并且依赖 ResultSet(返回结果)的列顺序。

那么如果修改了表结构(添加或者删除字段)可能会影响返回结果的列顺序,从而可能导致你的程序数据错误或者程序异常。

第五宗罪:视图绑定

在数据库设计过程中,我们经常会有这样的情况下:

如果你在创建视图中使用了 select *,就会导致各种各样的 Bug。

第六宗罪:关联冲突(Conflict in JOIN)

在简单的 SQL 中可能会表现正常,但是在你多表关联的时候可能会因为重名字段导致 SQL 错误。

例如 created,status,updated 等常见字段(一般表都会有)。

第七宗罪:拷贝数据

当你使用 SELECT * into INSERT .. SELECT  做数据拷贝的时候(一种常见的数据拷贝方式),当两张表的字段不一致时,你就可能将错误的数据放入了错误的列。

第八宗罪:拒绝了使用覆盖索引的可能性

覆盖索引是 MySQL 中非常重要的是一个优化手段,基本原理就是查询都字段都在索引中避免回表,所以 * 会导致覆盖索引失效。

总结

不使用 select

主要是是围绕着资源、和程序的稳定性和安全来说。

①浪费了时间

不论是读取数据还是传输数据,浪费都意味着等待,时间是无价的。

②浪费了资源

资源这么宝贵,你怎么能这样呢?

③增加了系统出 Bug 的可能性

例如:

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2. 程序正确运行数据不对

  3. 程序报错

  4. 程序运行结果不确定

为什么有人会使用 select * 呢

①珍惜时间

可以搞定的事情,为啥还要写那个多字段呢,也不美观和直接啊,其实就是懒!

②减少 SQL 解析器的工作

认为在 select 语句中协商众多的字段,会增减 SQL 解析的工作,例如是有权限、字段是否存在等等。

这个想法是对的,但是这是很早以前的情况,现在 * 反而会增加 SQL 解析器的工作。

感谢各位的阅读,以上就是“不用select的原因有哪些”的内容了,经过本文的学习后,相信大家对不用select的原因有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯