秋招---SQL学习

news2025/1/13 10:25:03

文章目录

  • SQL的执行顺序一般是怎样的
  • SQL如何性能优化
    • 1.select尽量不要查询全部*,而是查具体字段
    • 2.避免在where子句中使用 or 来连接条件
    • 3.尽量使用数值替代字符串类型
      • tinyint,int,bigint,smallint类型
    • 4.用varchar代替char
      • 那什么时候要用char不用varchar呢

链接: 数据库系统知识

SQL的执行顺序一般是怎样的

from →join →on →where →group by→avg/sum …→ having →select →distinct →order by→limit

  • from:确定查询表格;如果有join则对 FROM 子句中的前两个表执行笛卡尔积(交叉联接)生成临时表
  • on :对以上临时表进行条件筛选
  • where:过滤表中数据的条件;
  • group by:如何将上面过滤出的数据分组;
  • avg/sum/…:聚合函数;(与group by搭配使用,有group by 必有聚合函数)
  • having:对上面已经分组的数据进行过滤的条件;
  • select:查看结果集中的哪个列,或列的计算结果;
  • distinct:去重
  • order by:按照什么样的顺序来查看返回的数据
  • limit:限制查询结果返回的数量

总结一下:

  • 1.首先要确定查询、操作的表格内容
    • from确定查询表格,join 确定连接表格,由on条件筛选,确定临时表
    • 根据where再进一步筛选
  • 2.聚合函数,统计分析数据
    • 先group by确定分组数据,再聚合函数计算数据
    • having对聚合结果做筛选
  • 3.最后根据用户需求,返回数据结果
    • select 确定返回列或列的计算结果
    • distinct对数据去重
    • order by将数据以什么顺序来返回
    • limit限制查询结果返回数量

SQL如何性能优化

链接

1.select尽量不要查询全部*,而是查具体字段

×:select * from table
√:select id,area from table
原因:
1.节省资源、减少网络开销。
2.可能用到覆盖索引,减少回表,提高查询效率(啥意思,覆盖索引、回表查询?)

2.避免在where子句中使用 or 来连接条件

×:SELECT * FROM user WHERE id=1 OR salary=5000
√:用union all

SELECT * FROM user WHERE id=1 
UNION ALL
SELECT * FROM user WHERE salary=5000
  • sql语句中union的用法
  • 竖着拼接起来,其中只用union,会删除重复行,union all则会保留所有满足条件的值
  • 一般最好用union all,用union的话在输出结果时还会对其排序,又花了点时间
原因:
1.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描

还有一种情况可能会用or,比如要查询某个字段等于好几个值

select * from Member where MemberName = '张三' or MemberName = '李四'

也可以改写成union all形式

select * from Member where MemberName = '张三'
union all
select * from Member where MemberName = '李四'

3.尽量使用数值替代字符串类型

  • 主键primary key 优先使用int/tinyint(tinyint和int有啥不一样)
  • 对其他字段,也是能用数字表示就别用字符表示
原因:
1.字符会降低查询和连接的性能,并会增加存储开销:因为引擎在处理查询和连接时会逐个比较字符串中每一个字符;
2.而对于数字型而言只需要比较一次就够了;

tinyint,int,bigint,smallint类型

在sql中,整型数据有以上四种类型

  • tinyint:存储只占一个字节,范围是0~255
  • smallint:存储占两个字节,范围是 − 2 15 ( − 32768 ) -2^{15}(-32768) 215(32768) 2 15 − 1 ( 32767 ) 2^{15}-1(32767) 2151(32767)
  • int:存储为4个字节,范围是 − 2 31 ( − 2147483648 ) -2^{31}(-2147483648) 231(2147483648) 2 31 − 1 ( 2147483647 ) 2^{31}-1(2147483647) 2311(2147483647)
  • bigint:存储占8个字节,范围是 − 2 63 -2^{63} 263 2 63 − 1 2^{63}-1 2631

4.用varchar代替char

  • varchar变长字段按数据内容实际长度存储,存储空间小,可以节省存储空间;
  • char按声明大小存储,不足会补空格,一定把空间占满
  • 对于查询来说,char的效率应该更高一点(为啥?我看有的地方还说数据长度小更有利于查找效率提升呢)

这个问题有人从存储角度说明:在这里插入图片描述

  • 用varchar存储时,两个数据之间还需要用空格隔开,而且要得到下一个数据可能需要不断累加字段长度,增加计算过程,但是之间用char不一样,要查哪个,一次就能定位

那什么时候要用char不用varchar呢

  • 1.存储很短的数据,用char效率更高,因为varchar还需要一个字节存储信息长度
  • 2.定长数据,理由同上,varchar动态根据长度的特性就消失了,而且还需要一个字节存储信息长度
  • 3.十分频繁改变的column,因为varchar每次存储都要有额外的计算,得到长度等工作,如果一个非常频繁改变的,那就要有很多的精力用于计算,而这些对于char来说是不需要的
    577-728-257 11点45

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/74751.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

玩转华夏数艺

这里写自定义目录标题华夏数艺简述新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是…

叶酸-葡聚糖-盐酸吡柔比星偶联物(FA-PRB-DEX-NPs)|丝裂霉素C-右旋糖酐交联物(MMC-D)

叶酸-葡聚糖-盐酸吡柔比星偶联物(FA-PRB-DEX-NPs) 产品描述:将葡聚糖,盐酸吡柔比星和叶酸按序化学合成,并进一步定量,采用体外细胞性实验(四甲基偶氮唑蓝法),观察游离盐酸吡柔比星,叶酸-葡聚糖-盐酸吡柔比星,叶酸-葡聚糖-盐酸吡柔比星游离叶酸对于不同浓度细胞株SG…

计算机毕业设计ssm+vue基本微信小程序的育教幼教知识学习系统 uniapp 小程序

项目介绍 随着互联网技术的发发展,计算机技术广泛应用在人们的生活中,逐渐成为日常工作、生活不可或缺的工具,各种管理系统层出不穷。时代对人们的知识水平和综合素质要求也越来越高了,因此出现了各种适合用户在线学习系统。广泛存在于PC系统,手机APP,电脑软件等等,其中用户量…

Effective C++条款29:为“异常安全”而努力是值得的(Strive for exception-safe code)

Effective C条款29:为“异常安全”而努力是值得的(Strive for exception-safe code)条款29:为“异常安全”而努力是值得的1、抛出异常的案例2、解决资源泄露的问题3、异常安全的三种保证4、两种解决异常安全的方法4.1 使用智能指针…

如何压缩动态图片大小?gif图太大了怎么压缩?

对于新媒体行业人员来说,平时在工作中需要存非常多的素材,这些素材中有很多就是gif格式的,随着积累的素材越来越多,这些素材会占用大量的储存空间,那么遇到这种情况应该怎么办呢?应该如何压缩动态图片大小&…

Flutter - 布局原理与约束(constraints)

尺寸限制类容器用于限制容器大小,Flutter中提供了多种这样的容器,如ConstrainedBox、SizedBox、UnconstrainedBox、AspectRatio 等 1 ConstrainedBox ConstrainedBox 用于对子组件添加额外的约束 一般作为最外层的父布局 2 BoxConstraints BoxConstrai…

[附源码]Python计算机毕业设计SSM基于社区人员管理系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

阿里P8架构师精心整理:Dubbo+Docker+Kubernetes实战PDf,附面试题

前言 学习是一种基础性的能力。然而,“吾生也有涯,而知也无涯。”,如果学习不注意方法,则会“以有涯随无涯,殆矣”。 学习就像吃饭睡觉一样,是人的一种本能,人人都有学习的能力。我们在刚出生…

Keycloak之17.0.1 版本和Gerrit 整合-yellowcong

通过keycloak 来实现gerrit的用户管理。主要有几个步骤,1.安装gerrit,2.安装gerrit oauth 插件,3.配置gerrit . 4.创建keycloak的配置,添加realm,client,user ,三个,5.重启gerrit 测试。 17版本不一样的是,需要开启oauth,服务器增加前缀。 准备 Keycloak之17.0.1 版本安…

43. Python for 循环

43. Python for 循环 文章目录43. Python for 循环1. 课题导入2. 什么是循环3. 什么是for循环4. for 循环语法5. 可迭代对象6. for循环的执行流程7. for 循环的对象1. 循环对象为字符串2. 循环的对象不能为整数3. 循环的对象不能为浮点数4. 循环对象为布尔类型5. 循环对象为列表…

使用docker构建vue项目并成功运行在本地和线上

先说本地环境 windows10 node vue docker都已经安装齐全 获取nginx镜像 因为要用这个镜像来构建你的vue项目,就像给vue项目提供一个环境一样 docker pull nginx 创建 nginx config配置文件 在项目根目录下创建文件default.conf server {listen 80;s…

火灾报警产品-火灾探测报警产品

消防产品,是指专门用于火灾预防、灭火救援和火灾防护、避难、逃生的产品。适用范围 适用于消防联动控制系统设备、防火卷帘控制器、线型感温火灾探测器、城市消防远程监控产品。认证模式 型式试验初始工厂检查获证后监督。申请资料 1.认证委托人/生产者/生产企业的资…

全面支持 PyTorch 2.0:BladeDISC 5 月~11 月新功能发布

作者:BladeDISC研发团队 BladeDISC 上一次更新主要发布了 GPU AStitch 优化,方法来源于我们发表在 ASPLOS 2022上的论文AStitch。这一次,我们发布了 0.3.0 版本。 本次更新中 BladeDISC 社区全面支持了 PyTorch 2.0 编译,推进了…

同城跑腿系统搭建,灵活的配送选择满足更多场景

为了提供更加便捷的生活服务,同城跑腿系统搭建通过线上的同城跑腿服务平台,在网上用户可以申请同城服务的需求,平台的相关的工作人员快速的响应接单,快速进行同城的配送跑腿服务。 同城跑腿系统搭建,功能少是万万不能…

微信小程序第四篇:生成图片并保存到手机相册

系列文章传送门: 微信小程序第一篇:自定义组件详解 微信小程序第二篇:七种主流通信方法详解 微信小程序第三篇:获取页面节点信息 目录 一、封装分享组件 二、定义用户授权方法 三、调用流程 首先我们看一下要完成的效果&#x…

地理空间开发包 TatukGIS Developer Kernel 11.72.X Crack

TatukGIS Developer Kernel (DK) 是专业级 GIS SDK(软件开发工具包),各行各业的客户都使用它来开发自定义 GIS 应用程序或向现有产品添加地理空间功能。DK 可作为多个 SDK 版本使用,每个版本都针对特定的开发平台进行本地编译&…

胡扯系列之私人AI助手系统的分析与设计

背景 随着时代的发展,计算机算力的提升和近些年来AI模型的井喷以及发展。人工智能应用已经深入我们的日常生活。如人脸识别,无人驾驶等等,同时为了更好地与用户进行交互,完成特定功能,智能对话助手应运而生。如今大量…

某宝付费买的价值上万的60G的Python学习资源,0基础轻松赚钱到手软,请低调使用,禁止外传

前言 你是否 还在为升职加薪发愁? 苦于领导看不到自己更多长处? 还在为房贷,车贷,生计而发愁? 苦于不上班如何轻松赚快钱补贴家用? 为了帮助财务、设计、运营、策划、销售、HR、金融从业者、电商从业…

【单目3D目标检测】MonoFlex论文精读与代码解析

文章目录PrefaceAbstractContributionsPipelineProblem DefinitionDecoupled Representations of ObjectsInside & Outside ObjectsEdge FusionLossVisual Properties Regression2D DetectionDimension EstimationOrientation EstimationKeypoint EstimationAdaptive Depth…

Docker网络模式与配置

目录 🎈🎈1. Docker网络模式🏃‍♂️🏃‍♂️ 🏃‍♂️🏃‍♂️2. 外部访问docker容器🏃‍♂️🏃‍♂️ 🎈🎈3. 创建自定义网络:(设…