mysql常用语句优化

Mysql语句性能分析-EXPLAIN 使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。 如下面SQL语句: EXPLAIN select * from system_area where status = 1 获得下面的结果: select_type SIMPLE:简单表,不使用表连接或子查询 PRIMARY:主查询,即外层的查询 UNION:UNION中的第二个或者后面的查询语句 table 显示来自哪一张表 partitions 匹配的分区,如果查询是基于分区表的话,会显示查询将访问的分区 注意:在5.7以前的版本中,想要显示pa 立即下载

以下都是innodb搜索引擎的前提下

1.limit优化:当一个info表很大的时候,执行select * from info limit 10000,10,这时候mysql的搜索引擎会扫描表的前100010条数据,然后返回10条数据。然而当10000变成十万,一百万页的时候这条sql就会变得特别的慢。那么我们该如何优化这条语句呢?

首先我们要懂得什么叫覆盖索引:当搜索条件,搜索返回字段都存在于同个索引中,我们称它为覆盖索引。当使用explain的时候在Extra中有Using index出现的时候证明其属于覆盖索引。它的主要作用是搜索引擎只需要搜索索引就能返回需要的数据,而不需要再进行回表搜索的操作,这样会使效率高很多。

然后我们把上面的sql分解成一个关联查询:select * from info inner join (select id from info limit 10000,10) as info2 USING(id)

修改前的sql执行时间为1s左右,修改后的sql执行时间为0.04s左右(表大小为500w)。当然如果分页数不大的话不建议这么用,直接limit会比较快。具体需要根据业务分析


2.order by :首先,order by跟着的列必须要建立索引(因为索引列本身是已经排好序的)。如果order by后面跟着多个列,则需要建立联合索引,且必须遵守最左索引规则。其次,当几张表关联后结果的order by,则order by不可以跟着不同表的列,因为那样会导致索引无法使用。


3.在union all 后使用limit : 如select * from info union all select * from info limit 10 。这样如果info表中存在100w条数据,那么会把200w条数据存放到临时表后再进行limit取出前10条。那么我们该如何优化此sql呢?我们可以在每个子查询中加入limit,例如:(select * from info limit 10) union all (select * from info limit 10 )  limit 10 。 那有人会问查询第10页的前10条怎么办。此时我们只需要该sql为:(select * from info limit 110 ) union all (select * from info limit 110 )  limit 100,10 这样就能确保搜索出来的数据排序没错,当然当分页数越多也会越慢,可以结合第一条来优化。


4.对于多表的join查询,首先我们应该考虑一下mysql的优化器在优化计划的选择时,它会先把各个表的执行前后进行排列组合,也就是我们关联了5张表,那么优化器需要计算3125次,当关联10张表则会计算一亿次。当然mysql肯定不会去这样做,当计算次数超过设置的最大值时它将抛弃后面的计算,在前面的计算中获取最优的选择。此时优化器生成的最优计划往往不是最优的计划,因此绝大程度的影响到性能。所以当关联表很多的时候就应该考虑拆分sql。把sql拆成一个个小sql再聚起来返回相同的结果。有人说这样会有很多应用跟mysql的会话操作,会有很多网路传输的浪费,但其实拆分成小sql往往性能跟效率都要远高于大sql。因为它少了表锁的争夺,而且mysql在小sql的执行速度上做过优化,速度要远远高于大的sql,同时也少了很多的io操作。所以我们需要根据业务需求考虑是拆分还是不拆分。


5. 索引的创建:严格遵守最左索引规则。在两表关联on的字段上,一般只需要在后面的表的相应字段创建索引。

待续。。。

保姆级教程:手把手教你下载和配置Waymo自动驾驶数据集(附百度网盘链接) 本文提供了一份详细的Waymo自动驾驶数据集下载和配置指南,特别针对国内研究者优化了数据获取方案,包括百度网盘链接和Google Cloud CLI配置。文章还涵盖了环境配置、数据处理实战、可视化分析以及进阶技巧,帮助开发者高效利用这一业界黄金标准数据集进行自动驾驶研究。 阅读详情

相关推荐

ISO 26262中的失效率计算:Mission profile的使用

Mission profile:任务剖面,即产品在完成规定任务这段时间内所经历的时间和环境的时序描述;集成电路在工作时环境温度是在不停变化的,同时也存在运行状态和非运行状态;为此标准提出了根据任务剖面(Mission profile)以及集成电路的实际结温来评估热幅度变化、循环温度幅值等因素的影响;汽车电子元器件相关的Mission profile参考IEC TR 62380:Table 11。

weixin_47071127的博客 4810

MySQL 数据库中 52 条 SQL 语句性能优化方法,干货必收藏!

在适当的情形下使用GROUP BY而不是DISTINCT,在WHERE, GROUP BY和ORDER BY子句中使用有索引的列,保持索引简单,不在多个索引中包含同一个列,有时候MySQL会使用错误的索引,对于这种情况使用USE INDEX,检查使用SQL_MODE=STRICT的问题,对于记录数小于5的索引字段,在UNION的时候使用LIMIT不是是用OR。大多数时候(99%),表变量驻扎在内存中,因此速度比临时表更快,临时表驻扎在TempDb数据库中,因此临时表上的操作需要跨数据库通信,速度自然慢。

2401_84046895的博客 1051

LSTM模型股价波动率预测(含Python代码)

源代码文件可在gzh’finance褪黑素'回复【24012203】获取。

celiaweiwei的博客 3775

MySQL SQL语句性能优化

查询设计:减少数据量,避免复杂计算和函数操作。索引使用:合理创建索引,利用覆盖索引。表结构:垂直拆分和水平分区,选择合适的数据类型。配置优化:调整缓存和连接池,启用慢查询日志。其他技巧:避免临时表和锁表,使用批量插入和定期优化表。分析工具:使用 EXPLAIN 分析查询执行计划。

weixin_44876263的博客 1680

FPGA实现的AES加解密算法——Verilog源代码详解

本文将介绍基于FPGA的AES加解密算法的Verilog实现,并提供相应的源代码。根据密钥长度的不同,AES算法分为AES-128、AES-192和AES-256三种模式。对于已知的明文-密钥组合,可以使用在线的AES加解密工具计算出正确的密文,然后将该密文与FPGA加速器的输出进行比较。本文以AES-128算法为例,介绍基于FPGA的AES加解密算法的设计思路和Verilog实现。以上是基于FPGA的AES加解密算法的Verilog实现的相关内容。模块接受输入的明文和密钥,并输出加密后的密文。

HackSquad的博客 1976

整理 钢琴 约翰汤普森-简易钢琴(小汤)

文件名:(小汤1)约翰-汤普森钢琴1 超清PDF (原版引进)文件名:(小汤2)约翰-汤普森钢琴2 超清PDF (原版引进)文件名:(小汤3)约翰-汤普森钢琴3 超清PDF (原版引进)文件名:(小汤4)约翰-汤普森钢琴4 超清PDF (原版引进)文件名:(小汤5)约翰-汤普森钢琴5 超清PDF (原版引进)文件大小:20.1 MB。文件大小:23.7 MB。文件大小:45.7 MB。文件大小:51.7 MB。文件大小:72.0 MB。

TS的博客 5万+

MySQL常用语句大全

本文主要记录了常用的SQL语句,欢迎收藏,如果觉得对你有帮助就动动你的小手指给我一个赞👍,你的支持将是我持续输出的动力

热爱编程、热爱生活、热爱探索 5万+

【实战项目开发技术分享】如何设置机器人禁行区/虚拟墙

在现代机器人技术的日益发展中,路径规划是使机器人在复杂环境中安全、高效移动的关键部分。其中一个重要的问题是如何划定机器人的禁行区,以确保机器人不会进入危险区域或无法到达的地方。在本文中,我们将探讨一些关键策略,帮助机器人算法工程师更好地划定禁行区。代价地图可以通过多层叠加来实现,一般包括以下几个层级:静态地图层(Static Map Layer):由SLAM(Simultaneous Localization and Mapping)构建的静态地图。该层包含了环境中固定不变的地物信息,如墙壁、家具等。

xiewf的博客 1万+

MySQL常用30种SQL查询语句优化方法

本文介绍了常用的30种MySQL SQL查询优化方法,并通过实际案例演示了它们的应用。优化SQL查询是提高数据库性能和响应速度的关键,通过合理优化SQL查询可以减少数据库的负载,提高查询效率。读者可以根据自己的实际情况和业务需求,选择合适的优化方法,提高数据库的性能和可用性。同时,我们也要不断学习和实践,在数据库领域不断提高自己的知识水平和技术能力,成为一名优秀的数据库工程师。

LU58542226的博客 2857

Android CCodec (十七) 硬件解码调用分析-1(基于V4l2)

简单的分析V4L2DecodeComponent和其相关内容,后续针对解码调用单独分析。

给大佬递杯卡布奇诺的博客 6593

pyecharts在jupyter notebook中不能够渲染图表问题。

在使用jupyter notebook中使用pyecharts绘制可视化图表的时候,发现图表不能渲染到页面中,生成的html是没问题的,本文主要解决在jupyter notebook中不能渲染这个问题。

猿小白的博客 1166

MySQL用户管理和高级SQL语句

在MySQL中熟悉用户管理中创建用户,删除用户,对用户名称进行重命名;熟悉MySQL的高级语句语法,如 :select,null值以及正则表达式的用法。

zheshijiuyue的博客 2925

网络流量异常信息分析方法研究

本课题针对网络安全中网络流量异常的分析方法进行研究,提出一种基于机器学习和深度学习的异常检测算法。该算法采用卷积神经网络(CNN)和长短时记忆神经网络(LSTM)结合的方式,通过训练得到二分类模型,从而实现对网络流量异常的检测。随着互联网的飞速发展,网络攻击事件日益增多,网络安全问题成为了亟待解决的问题之一。常见的网络攻击手段包括 DDoS 攻击、SQL 注入、XSS 攻击等,这些攻击手段可能导致网络系统发生异常,给网络运维、数据安全带来极大的挑战。

肥晨开发的学习之路 1035

php面试专题---MySQL常用SQL语句优化

php面试专题---MySQL常用SQL语句优化 一、总结 一句话总结: 原理,万变不离其宗:其实SQL语句优化的过程中,无非就是对mysql的执行计划理解,以及B+树索引的理解,其实只要我们理解执行计划和B+树以后,优化SQL语句还是比较简单的,当然还有特别复杂的SQL,我这里只是一些简单例子,当然再复杂的SQL,还是逃脱不了原理性的东西。 1、mysql中无法使用索引的...

weixin_30810583的博客 113

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

MySql 常用SQL语句、 SQL优化

SQL语句主要分为五类:数据定义语言(DDL)用于管理数据库结构,数据查询语言(DQL)用于检索数据,数据操纵语言(DML)用于增删改数据,数据控制语言(DCL)用于权限管理,事务控制语言(TCL)用于事务管理。键约束方面,超键能唯一标识行,候选键是最小超键,主键是选定的候选键,外键则关联表间数据。SQL约束包括非空、唯一、主键、外键、检查及默认值约束,确保数据完整性。

weixin_44289947的博客 1331

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

MySQL中优化sql语句查询常用的30种方法

MySQL中优化sql语句查询常用的30种方法

程序员养成日记 385

MySQL 常用30种SQL查询语句优化方法

MySQL 常用30种SQL查询语句优化方法

呆木弱鸡 401

mysql 优化常用语句

laravel技术交流群 :784030154 1 读写比例: show global status like 'com_select'; 获得服务器启动到目前查询操作执行的次数; show global status like 'com_insert'; 获得服务器启动到目前插入操作执行的次数; show global status like 'com_update'; 获得服务器启动...

一路向前 245

Mysql 常用sql语句优化

1.并发性的sql语句 少用或者不用多表操作,如业务需要多表查询可以先查询一个表的数据,获取到后遍历再次查询其他表,也就是把一个join查询的语句分成2个或多个单表查询的语句。 2提高查询缓存的利用率 如果查询很原子(很小),就会增加查询缓存的利用率,比如做一个业务需要一个两表联查的sql语句(表1和表2),我们把这个两表联查sql语句分成先查表1数据再遍历循环查询表2,,这样就会生成2个查询缓存...

qq_36358709的博客 212

mysql语句常用优化

1:不要使用select* 2:尽量在where字段上添加搜索引 3:模糊查询中%前置不能使用索引,例如 like‘%12’ 4:使用or语句要注意,两侧的语句都有索引才会使用索引 5:分组优化 对于分组的数据mysql会自动对数据进行排序,所以可以强制其不排序,提高速度 6分页优化 ...

qq_24100549的博客 135

Mysql删除语句优化_MySQL性能优化之常用SQL语句优化

SQL性能优化的目标:至少要达到range级别,要求是ref级别,consts最高。【阿里巴巴JAVA开发手册】说明:1)、consts单表中最多只有一个匹配行(主键/唯一索引),在优化阶段即可读到数据。2)、ref指的是使用普通的索引(normal index)。3)、range 对索引进行范围检索反例:explain表的结果,type=index,索引物理文件全扫描,速度非常慢,这个index...

weixin_29038303的博客 567

MySQL常用SQL语句优化

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34367845的博客 122

mysql的sql语句常用优化方案

最大化利用索引;尽可能避免全表扫描;减少无效数据的查询;

xhtaitao的博客 1694

sql语句优化总结 mysql_常用SQL语句优化技巧总结【经典】

本文实例总结了常用SQL语句优化技巧。分享给大家供大家参考,具体如下:除了建立索引之外,保持良好的SQL语句编写习惯将会降低SQL性能问题发生。①通过变量的方式来设置参数好:stringsql = "select * from people p where p.id = ? ";坏:stringsql = "select * from people p where p.id = "+id;数据库的...

weixin_36429440的博客 200

mysql常用sql语句优化

转载自:http://www.cnblogs.com/gomysql/p/3632209.html 在数据库日常维护中,最常做的事情就是SQL语句优化,因为这个才是影响性能的最主要因素。当然还有其他方面的,比如OS优化,硬件优化,MySQL Server优化,数据类型优化,应用层优化,但是这些都没有SQL语句优化来的重要。下面将介绍INSERT,GROUP BY,LIMIT等的优化方法。 ...

ZhangYaohui专栏 1545

mysql语句优化30条_开发中常用的19 条 MySQL 优化技巧

作者:zhangqh来源:segmentfault.com/a/1190000012155267本文我们来谈谈项目中常用的MySQL优化方法,共19条,具体如下:一、EXPLAIN做MySQL优化,我们要善用EXPLAIN查看SQL执行计划。下面来个简单的示例,标注(1、2、3、4、5)我们要重点关注的数据:type列,连接类型。一个好的SQL语句至少要达到range级别。杜绝出现all级别。ke...

weixin_36352025的博客 172
上一篇: web集中式高并发架构设计
下一篇: 微信朋友圈实现思路
麦田小猪
博客等级 码龄14年 117粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

麦田小猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值