数据库
首页 > 数据库> > SQL优化小技巧①---尽量不使用或少使用select *

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…

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

标签:sql,查询,---,或少,哈利波,student,SQL,学生,select
来源: https://blog.csdn.net/happydrink233/article/details/114709573