SQL优化小技巧①---尽量不使用或少使用select *

SQL优化小技巧①—尽量不使用或少使用select *

前言:代码小白,在工作中遇到了一些坑,在次记录下踩过的坑以及解决办法,方便以后查看。欢迎路过的大佬给出宝贵的指导意见或建议~

问题叙述

在项目上有个查询功能,将数据库中所有的组件信息查询出来,可以类比于学生信息管理系统中,将所有学生的信息查询出来,再转化成树结构展示到前台页面,本身逻辑很简单,转父子关系树结构也很快,但是加载一次却需要40多秒…将sql单独在数据库软件中运行发现,是sql语句的问题,sql语句大概如下:

select * from student where 学校="霍格沃兹"

student表结构如下:

idnameclassstudent_info
1哈利波特格兰芬多生日、性别、年龄、爱好…
1赫敏格兰芬多生日、性别、年龄、爱好…

转换后前台页面大致如下:

  • 格兰芬多
    • 哈利波特
    • 赫敏
    • 罗恩
  • 赫奇帕奇
    • 纽特

出于某些原因,student_info里面存了大量字段,包括性别、年龄、爱好、身高…等等信息,内容非常多,一旦表里的学生数量多起来,通过select * 的方式取得的数据将会非常多,加载极慢

解决方法

展示学生列表只需要class 和 name、id即可,所以这里将sql语句改为:

select id, name, class from student where 学校="霍格沃兹"

组织成学生列表并不需要学生的详细信息,及student_info中的年龄、身高…等信息,等用户点击某一学生的时候,再单独查询这一个学生的信息即可:如点击哈利波特

select student_info from student where name = "哈利波特"

这样就完美解决了学生列表加载极卡的问题

总结

在实际项目中,sql查询不要使用select * ,即使是查询该表的所有信息,也要把查询的字段一个一个罗列出来,这样有利于提高查询速度,减少不必要的查询带来的时间、空间上的浪费;同时,把查询字段都罗列出来也会让查询结果更稳定,如果表结构里字段的顺序发生了变化而代码还是select * ,那么查询出来的结果可能会和原来的顺序不同,导致出现一系列的bug…

下次再总结下将数据转为树型结构的问题

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值