SQL优化小技巧①---尽量不使用或少使用select *
作者:互联网
SQL优化小技巧①—尽量不使用或少使用select *
前言:代码小白,在工作中遇到了一些坑,在次记录下踩过的坑以及解决办法,方便以后查看。欢迎路过的大佬给出宝贵的指导意见或建议~
问题叙述
在项目上有个查询功能,将数据库中所有的组件信息查询出来,可以类比于学生信息管理系统中,将所有学生的信息查询出来,再转化成树结构展示到前台页面,本身逻辑很简单,转父子关系树结构也很快,但是加载一次却需要40多秒…将sql单独在数据库软件中运行发现,是sql语句的问题,sql语句大概如下:
select * from student where 学校="霍格沃兹"
student表结构如下:
id | name | class | student_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…
下次再总结下将数据转为树型结构的问题
标签:sql,查询,---,或少,哈利波,student,SQL,学生,select 来源: https://blog.csdn.net/happydrink233/article/details/114709573