ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2021-03-12 21:57:41  阅读:199  来源: 互联网

标签:sql 查询 --- 或少 哈利波 student 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有