sql优化学习

WPS Office 2019 For Linux二次开发全流程:从源码下载到Demo运行 本文详细介绍了在Linux环境下进行WPS Office 2019 C++二次开发的全流程,涵盖从开发环境准备、源码获取、核心依赖(Qt与WPS)安装配置,到最终编译运行官方Demo的完整步骤。文章重点解析了环境搭建中的常见问题与解决方案,旨在帮助开发者快速上手WPS二次开发。 阅读详情

执行计划

通过执行计划,我们可以分析一条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

破解现代反爬虫:JS加密、OB混淆与CSS反爬的实战攻防分析 摘要: 随着反爬技术的升级,JS加密、OB混淆和CSS反爬成为主流防护手段,阻碍传统爬虫获取数据。本文解析了这些技术的工作原理,并提出破解策略:通过模拟浏览器(如Selenium、Puppeteer)执行动态JS,逆向混淆代码,以及利用开发者工具突破CSS隐藏。针对复杂防护,开发者需结合技术分析与工具应用,如API接口抓取、动态渲染破解等,以应对不断演进的反爬机制。未来,爬虫攻防将持续升级,需保持技术敏锐性。 阅读详情

相关推荐

XVF3800麦克风阵列实战:从选型到快速原型搭建

本文详细介绍了XVF3800麦克风阵列的选型与快速原型搭建实战经验。从开箱即用的特性到波束成形、回声消除等核心功能拆解,再到硬件设计避坑指南和固件开发技巧,帮助开发者高效实现智能语音设备的开发。特别适合智能音箱、会议终端等需要远场拾音和声源定位的应用场景。

weixin_29161719的博客 273

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

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

黄团团的个人博客 2万+

一文带你了解SOA接口测试

了解汽车电子行业的人,近几年可能经常见到一个词“SOA”,那SOA具体是什么?作为测试人员应该要测试哪些内容呢?这篇文章就简单给大家介绍一下。SOA(Service Oriented Architecture)是一种面向服务的架构,最早应用于IT行业,虽然行业内对于SOA的定义没有一个统一的描述,但是总体而言,SOA把功能定义成为服务,服务带有明确的可调用接口,并可以通过网络调用。在汽车领域,对于高性能计算平台而言,为了实现域控制器以及区域控制器之间的互联互通和软硬分离、缩短开发周期等优势,也引入了SOA的

怿星科技的博客 7155

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

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

程序员高级码农的博客 4154

PP-OCRv6 ONNX部署的官方和手搓方案

PP-OCRv6 基于全新设计的 PPLCNetV4 统一骨干网络,提供 tiny、small、medium 三档模型,分别面向端侧/IoT、移动端/桌面端、服务端场景。在内部多场景综合评估集上,PP-OCRv6_medium 相比 PP-OCRv5_server 识别精度提升 5.1%、检测精度提升 4.6%,同时 GPU 推理速度提升 2.37×;以仅 34.5M 参数的规模,精度超越 Qwen3-VL-235B、GPT-5.5 等大型视觉语言模型。

懒人的技术笔记 1889

5分钟搞定单细胞marker基因气泡图:scDotPlot保姆级教程(含Seurat适配)

本文提供了一份详细的scDotPlot R包使用教程,帮助用户在5分钟内完成单细胞marker基因气泡图的绘制。教程涵盖环境准备、Seurat和SingleCellExperiment对象的适配处理、进阶可视化技巧及自动化报告生成,特别适合生物信息学新手和临床研究者快速掌握这一高效的可视化工具。

weixin_29047545的博客 261

【mysql】SQL优化15种方法

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

A-Itfuture的博客 1万+

STM32H750_QSPI_Flash_Configuration_With_CubeMX

本文详细介绍了如何使用STM32CubeMX配置STM32H750的QSPI Flash接口,包括硬件连接、CubeMX参数设置、代码生成与初始化流程优化。通过实战示例展示了Flash ID读取、页编程与数据读取等常用操作,并提供了调试技巧与性能优化建议,帮助开发者高效实现高速外部存储扩展。

weixin_29176179的博客 273

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

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

qq_35006660的博客 714

基于传统算法的半导体晶圆缺陷检测原理及代码(二)

了解基于传统算法的半导体晶圆缺陷检测原理和方法,对于深入理解半导体制造工艺和质量控制具有重要意义。在半导体制造技术持续创新的浪潮中,基于传统算法的缺陷检测技术也将不断演进,为半导体产业的高质量发展提供坚实可靠的技术支撑,确保在芯片制造的每一个环节都能精准识别和管控缺陷,推动半导体产业迈向更高的发展水平。基于传统算法的半导体晶圆缺陷检测技术在半导体制造的长期发展历程中扮演了重要角色,凭借其成熟的技术体系、较快的检测速度和相对较低的成本,在各个工艺阶段为保障晶圆质量发挥了关键作用。

m0_44975814的博客 2219

SPD-Conv+YOLOv8:空间深度转换卷积赋能小目标检测,从原理到实战的科研级优化指南

从理解SPD-Conv“空间到深度+逐步卷积”的核心设计,到亲手将其嵌入YOLOv8并验证在小目标场景的表现,再到基于此探索属于自己的科研与工程方向——这个过程能让你深刻理解“小目标特征保留”在检测任务中的核心价值。现在就开始行动,相信你会在小目标检测的“细节捕捉”之路上,走出一条属于自己的技术路径。实验通常会证明:嵌入SPD-Conv后,YOLOv8在小目标AP上提升5-8个百分点,mAP50-95提升3-5个百分点,而推理速度仅下降5%以内,充分体现了其“保细节+提精度”的优势。

m0_64661770的博客 161

SQL优化学习笔记

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

weixin_74333370的博客 917

Open3D——平面点云凸多边形轮廓提取【2025最新版】

平面点云凸多边形轮廓提起,博客长期更新,本文最近更新时间为:2025年1月6日。

点云侠的博客 6753

SQL优化学习建议

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

学习记录 804

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

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

MySql优化工具、MySql优化

weixin_41016739的博客 2852

OV9734 DATASHEET,完整规格书

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

对于SQL优化学习和记录

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

qq_28458087的博客 163

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

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、付费专栏及课程。

余额充值