sql优化学习

【阿里云大模型高级工程师ACP习题集】2.9 大模型应用生产实践(下篇) 【摘要】这是我精心整理出对应的习题集,里面足足有 30 道题目,从基础概念到深度拓展,全方位覆盖章节重点、难点。不管你是想检验自己的学习成果,还是想针对薄弱环节进行强化训练,它都能完美适配! 阅读详情

执行计划

通过执行计划,我们可以分析一条sql语句的性能,是我们进行sql优化的关键。我们看看执行计划包含了哪些信息。

id

每个sql都有一个id,如果使用子查询,那么id就不同。如果使用union查询,会产生一个id=NULL的临时表,主要对UNION表结果进行去重合并。

select_type
  • SIMPLE

简单的查询,不涉及union或子查询

  • PRIMARY

最外层的查询,比如子查询,最外层的就是PRIMARY

  • SUBQUERY

如果sql包括子查询,子查询就是SUBQUERY。

select id from orders where (select id from orders) or id = 1

如果是简单的子查询,mysql会自动转换为连接查询。

select id from orders where (select id from orders)
  • DEPENDENT SUBQUERY

子查询依赖了父条件

select id from orders o where id in (select id from orders and o.id = 1) or o.id=2
  • UNION

union查询,左边是PRIMARY,其余为UNION

  • UNION RESULT

union会创建临时表,用来对结果去重合并,那么这个表类型就是UNION RESULT

  • DEPENDENT UNION

union查询依赖外部查询

select id from orders where id in (select id from orders where id=1 union select id from orders where id=2)

我们又个疑惑,这个查询并没有依赖外部查询,但是确实结果有DEPENDENT UNION,原因还是mysql的优化

  • DERIVED

物化子查询

select * from (select *,count(*) from orders group by id) AS xxx where xxx.id=1
  • MARTERIALIZED

物化子查询后,进行关联查询

select * from order where id in (select order_id from order_item)
partitions

和分区表有关

type
  • system

表只有一条数据,且统计数据精确,比如MyISAM等。如果是InnoDB则变成了const

  • const

使用主键或唯一索引等值查询,如果是非唯一索引,那么就不是const。也就是const的结果一定唯一

select * from orders where id=1
  • eq_ref

如果被驱动表通过主键或唯一索引关联查询

select  o.* from orders o inner join orders o2 on o.id=o2.id
  • ref

通过普通索引查询,可能返回多列

select * from order where creater=1 -- creater是普通索引
  • fulltext

略

  • ref_or_null

等值匹配为null

select * from orders where order_no=xxx and order_no is null; -- order_no必须可以空
  • index_merge

索引合并

  • unique_subquery

  • index_subquery

  • range

范围查询,between、>、<、in

  • index

全表扫描但走覆盖索引

select id from orders where order_no like '%xx'
  • all

全表扫描

possible_keys

可能用到的索引

key

实际用到的索引。如果走全表但走覆盖索引时,key是有值的,但possible_keys无值

key_len

实际使用到的索引长度。根据这个字段可以判断组合索引是否全部使用,如果全部使用,则key_len为组合字段的长度和。

可变字段+2(eg: varchar)

可null字段+1

如果是字符类型,比如utf8,varchar(50) null的长度为50*3+2+1

如果是int类型,比如int null的长度为4+1

ref

=const,表示等值匹配

=列名,比如关联查询为eq_ref,则为被驱动表的列名

rows

预估需要读取的记录数

filtered

在rows中,有多少百分比的记录满足条件

extra

额外信息。

  • impossible where

where永远为false

select * from orders where id is null
  • using join buffer

  • not exists

在连接查询中,条件is null不可能满足

select o.* from orders o left join order_item oi on o.id = oi.order_id where o.id is null
  • using intersect/using union/using sort_union

索引合并

  • zero limit
  • using filesort

排序操作没用到索引,会在磁盘或内存中进行排序,非常耗性能

  • using temporary

使用了临时表,常见的如distinct/group by/union

select * from orders group by creater -- creater是索引

这个sql同时用到了using filesort/using temporary,因为group by操作会先进行order by,再group by

GeoServer下载与安装(详细图文教程) GeoServer官方版可以方便的发布地图数据,允许用户对特征数据进行更新、删除、插入操作,通过 GeoServer 可以比较容易的在用户之间迅速共享空间地理信息。 阅读详情

相关推荐

802.1x之EAP-TLS测试方法

CA证书一般是由权威的认证机构发出,用来验证该机构签名的证书,持有CA证书的设备可以验证对端的证书是否由自己信任的机构颁发的。在我们内部使用证书时,我没可以自己充当CA认证机构,管理私钥和CA证书,使用他们签名服务器、客户端证书。2、使用证书请求文件server_csr.pem、CA私钥、CA公钥生成服务器证书(正常情况下自己不拥有CA私钥,是把证书请求文件发给认证机构,由认证机构返回证书)进行802.1x EAP-TLS认证时需要IPC、服务器分别存储CA证书、设备证书、私钥,通过交换证书实现身份验证。

写作是为了更好的思考 2162

SQL优化的15个小技巧,纯干货分享!

普通索引最基本的索引,没有任何限制唯一索引与普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值主索引即主键索引,关键字PRIMARY复合索引为了更多的提高MySQL效率可建立组合索引,遵循“最左前缀”原则全文索引可用于MyISAM表,MySQL5.6之后也可用于innodb表,用于在一篇文章中,检索文本信息的, 针对较大的数据,生成全文索引很耗时和空间以上就是目前我对SQL优化的一些个人理解和总结,如果遗漏,欢迎评论区补充说明!

黄团团的个人博客 2万+

stm32H743基于CubeMX配置为双ADC多通道DMA规则采样

stm32H743的ADC支持的最大频率为36MHz,有相关资料上说是可以超频,具体技术细节不多讨论。 需求: 使用stm32H743的ADC采集5路ovrc

xtqbp的博客 4361

SQL优化还不会?速来掌握这15个小技巧

sql优化是一个大家都比较关注的热门话题,无论你在面试,还是工作中,都很有可能会遇到。如果某天你负责的某个线上接口,出现了性能问题,需要做优化。那么你首先想到的很有可能是优化sql语句,因为它的改造成本相对于代码来说也要小得多。那么,如何优化sql语句呢?这篇文章从15个方面,分享了sql优化的一些小技巧,希望对你有所帮助。

程序员高级码农的博客 4154

AntV G6边动画实战:手把手教你实现数据流向箭头与虚线流动效果

本文详细解析了如何使用AntV G6实现数据流向箭头与虚线流动效果,通过自定义边动画提升数据可视化的动态表现力。从基础环境搭建到核心概念讲解,再到虚线流动动画和箭头路径动画的具体实现与参数调控,帮助开发者掌握G6边动画的高级技巧,适用于网络流量监控、数据传递等场景。

weixin_28487433的博客 264

YOLO11全网首发:CVPR2026 MixerCSeg | DEGConv方向引导边缘门控,破解细长裂缝检测难题

DEGConv通过方向先验嵌入、边缘增强卷积和动态门控三大机制,针对性解决了YOLO在处理裂缝类细长、多方向、低对比度目标时的特征提取不足问题,显著提升了裂缝检测的精度与鲁棒性。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 560

【mysql】SQL优化15种方法

其实,开发项目上线初期,由于业务数据量相对较少,一些SQL的执行效率对程序运行效率的影响不太明显,而开发和运维人员也无法判断SQL对程序的运行效率有多大,故很少针对SQL进行专门的优化, 但是,随着时间的积累,业务数据量的增多,SQL的执行效率对程序的运行效率的影响逐渐增大,此时对SQL的优化就很有必要。在实际业务场景中,可能我们真正需要使用的只有其中一两列。查了很多数据,但是不用,白白浪费了数据库资源,比如:内存或者cpu。此外,多查出来的数据,通过网络IO传输的过程中,也会增加数据传输的时间。还

A-Itfuture的博客 1万+

QCC304x系列开发教程(基础篇)之2.1-QCC3040之开发环境搭建

一、安装MDE 1.解压qualcomm_mde.win.2.4_installer_2.4.1.4压缩包,安装MDE_WIN_2.4.1.4_x64.exe,路径自定义 点击NEXT, 安装完成后,点击Finish. 完成安装后,桌面生成快捷方式

心跳包的博客 6077

explain | 索引优化的这把绝世好剑,你真的会用吗?

前言对于互联网公司来说,随着用户量和数据量的不断增加,慢查询是无法避免的问题。一般情况下如果出现慢查询,意味着接口响应慢、接口超时等问题。如果是高并发的场景,可能会出现数据库连接被占满的情...

qq_35006660的博客 714

AUTOSAR TcpIp模块 以太网配置开发2

someip协议之tcpIp协议

汽车电子电气 1085

AI大模型探索之路-认知篇1-全景透视:揭秘AIGC技术的进化之路

随着人工智能技术的突飞猛进,内容创作方式的发生了革命性的转变;从早期专业人员主导的内容生产,到现如今生成式人工智(AIGC)能创作时代;本篇文章主要讲解AIGC技术的演变历程。

寻道AI,探索AI无限可能! 1646

SQL优化学习笔记

索引设计用覆盖索引减少回表,遵循最左前缀优化排序/分组;主键设计聚焦顺序插入、长度最小化。插入优化批量提交、顺序插入主键;海量数据用LOAD DATA跳过 SQL 解析。查询优化排序/分组利用索引有序性,避免filesort;大偏移量分页用覆盖索引 + 子查询。锁与更新UPDATE需命中有效索引,防止行锁升级为表锁;COUNT优先用count(*),效率最优。

weixin_74333370的博客 917

萤石云cs刷机解绑固件

萤石CS-C2C-32WFR刷机包,萤石CS-C6TC刷机包,萤石CS-C6H刷机包,萤石猫眼产品等等。萤石云摄像头固件修改,绑定手机号解绑,更换序列号教程。

海康威视技术支持 2万+

SQL优化学习建议

1.熟悉执行计划的各种操作,会看懂执行计划  2.熟悉表的数据分布,索引,分区等对执行计划的影响  3.熟悉各种SQL语句的写法,能等价改写各种SQL  4.能够利用业务特点改写和设计SQL  5.能利用ORACLE提供的各种工具,比如sql trace,dbms_xplan,sql tuning advisor,spm等优化sql 推荐书籍: 1. oracle性能诊断艺术

学习记录 804

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

MySQL学习笔记-05(SQL优化)

MySql优化工具、MySql优化

weixin_41016739的博客 2852

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

对于SQL优化学习和记录

通过达梦数据库的学习和培训课程,对数据库的语句有一些学习和看法。其中一块是SQL对语句优化。学习后了解到在日常项目过程中,常因为某些业务查询慢和时间长的现象,部分操作时候也要花较长时间,所以或多或少涉及到语句的优化: 首先在硬件上,作为底层基础设施,良好的设备运行效率和足够的网络带宽要先保证。 其次是去繁就简,压缩数据库的表结构,尽量缩短语句的长度: 去掉不必要的大表的全表扫描;缓存小表的全表扫描。​​​​​​​ 在查询语句上的优化:避免在where子句中使用o...

qq_28458087的博客 163

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

sql优化学习总结

1、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2、应尽量避免在 where 子句中使用 != 或 &lt;&gt; 操作符,否则将引擎放弃使用索引而进行全表扫描。.in 和 not in 也要慎用,否则会导致全表扫描,对于连续的数值,能用 between 就不要用 in 了,很多时候用 exists 代替 in 是一个好的选择。3、任何...

weixin_38696033的博客 217

sql性能优化学习总结

本文主要从mysql体系结构和架构优化等角度出发,通过连接配置优化、查询优化、存储引擎和字段优化、架构体系优化等手段,多环节多角度解决SQL性能优化。一般而言,查询优化、字段优化、缓存使用时优化的最佳手段。

穷冬不见雪,正月已闻雷的博客 1084

sql优化学习记录

面试被问到了sql优化,回来学习一下,看别人的文章,自己在手动记录一遍,算是加深印象吧。 所谓sql优化,本质上有三种选择: 1、降低目标sql语句的资源消耗 2、并行执行目标sql语句 3、平衡系统的资源消耗 以上的说明比较难理解,还是记录一些简单易懂的方法: 1、对查询进行优化,避免全表查询。 2、避免在where子句使用null值判断,会导致索引失效。 ...

weixin_43470118的博客 175

SQL的学习五-SQL优化

             最后一个就是真正在我们使用SQL要确保SQL的快速性,提高SQL的性能。            1.对查询进行优化,只要尽量避免全表扫描。首先应该考虑在where及order by涉及的列建立索引。            2.应该尽量避免在where字句中对字段进行null的判断,否则将导致引起放弃使用索引,而进行全表扫描。            备注:最好不要给数据库留...

ThreeWellW的博客 432

sql优化学习笔记

mysql优化、数据库优化一、尚硅谷-----周阳1、mysql的架构介绍2、mysql存储引擎3、索引介绍4、explain结果的各字段意义说明5、调优案例: 一、尚硅谷-----周阳 1、mysql的架构介绍 2、mysql存储引擎 数据库相关面试题参考另一篇博客:Java面试笔记自己用、第二阶段、4数据库相关 常用的两个MyISAM和InnoDB 查看mysql已提供的存储引擎命令:show engines; 查看已安装的mysql当前默认存储引擎:show variables lik

furenqiang的博客 833

mysql学习之sql优化

慢查询日志分析问题sql slow_query_log 启动或者停止慢查询日志 slow_query_log_file 指定慢查询日志的存储路径和文件 long_query_time 指定记录慢查询日志的阈值通常改为0.001秒也就是1毫秒 long_queries_not_using_indexs 是否记录未使用索引的sql 常用的慢查询日志分析工具 mysqldumpslow pt-query-digest 实时获取问题sql select id,user,host,D...

MineCodelife的博客 216

MySQL学习笔记5【SQL优化/视图/存储过程/触发器】

SET @自定义变量 :=?;# := 和 = 都可以SELECT @自定义变量 :=?;SELECT 字段 INTO @自定义变量 FROM ....;#将查询结果传递给自定义变量BEGIN#变量声明#给变量赋值SELECT cnt;#输出结果END;关于这部分,我主要给的并不是语法示例而是一段语句示例,这样应该更有助于理解存储过程那些语法知识,感觉这部分有点奇怪的感觉了,不知道开发过程实际会怎么使用呢。

Rinai的博客 1197

《收获,不止SQL优化》 - 调优信息一键生成脚本学习

这是杂货铺的第448篇文章梁敬彬老师的《收获,不止SQL优化》,关于如何缩短SQL调优时间,给出了三个步骤,1. 先获取有助调优的数据库整体信息2. 快速获取SQL运行台...

bisal的专栏 1463

sql学习-SQL优化

第一个filesort,第三个和第四个index,第四个还多了一个backward index scan,因为B+树默认的是升序,此处两个字段都为降序排序。此处的id,phone,name均是覆盖索引(phone和name有联合索引即二级索引,id就挂在二级索引下)。分裂过程:50本来该插到47后,但没空间,故选取50%的位置将此处之后的数据移到第三页,再将50插入到47后,随后改变链表指针,第一页的后面变成第三页,随后才是第二页。尽量不用UID或自然主键,因为无法保证顺序插入,且长度太长。

sdx233666的博客 310

【MySQL学习】 进阶篇 Day4 SQL优化与视图

批量插入:insert into 表名 values …;手动提交事务:执行insert之前开启事务,多条insert之后手动提交,避免频繁的事务开启提交主键顺序插入:主键顺序插入性能高于乱序插入。插入大量数据:如果一次性需要插入大量数据,使用insert插入性能较低,可以使用lode指令加载本地文件到数据库中页分裂:当主键乱序插入时,每次添加数据MySQL为了将新数据插入到合适的位置,主键索引树会重新进行排序和数据移动,增加了开销。

weixin_56858526的博客 586
上一篇: 事务隔离级别小测试
下一篇: mysql sql成本计算
cblstc
博客等级 码龄11年 52粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值