MySQL优化(SQL优化)

MySQL优化(SQL优化)

前导内容:MySQL索引篇

一、SQL优化

1.插入优化

1.单条插入效率较低我们使用批量插入

2.手动提交事物

3.按主键的顺序插入

image-20220224145433230

大批量数据插入使用load命令可以大大提升效率

mysql --local-infile -u root -p #客户端连接服务器
set global local_infile = 1; #设置全局参数为1,开启本地文件导入数据的开关
load data local infile '文件路径' into table '表名' fields terminated by "字段分割符" lines terminated by '行分隔符'

image-20220224145307529

2.主键优化

image-20220224150651736[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3Knz0WJP-1645689869423)(C:\Users\89737\AppData\Roaming\Typora\typora-user-images\image-20220224150754259.png)]

页分裂:在innodb存储引擎中,数据按主键顺序存储,那么如果乱序存储的话就会造成页分裂。
加入第一页和第二页数据满了。那么下一个数据的主键顺序应该在第一页和第二页中间,此处使用页分裂,将第一页的后一半放入第三页然后在拼上需要插入的数据,随后 改变链表结构,让页1的下一个指向页3,在下一个指向页2,这样就保证了主键数据的顺序
如下图:

image-20220224150818453

页合并:是指加入相邻页的数据量小于50%(可以调整)的话,innodb就将两个页合并

image-20220224150849459

image-20220224150904399image-20220224151119424

3.order by优化

image-20220224152616572

效率:using index > using filesort
使用order by 排序的时候 ,如果没有索引那么会在排序缓冲区完成排序,若有索引则会通过顺序扫描直接返回有序数据

image-20220224152634679

因为存储默认顺序是升序,所以当我们降序的时候会显示backword index scan 表示倒序扫描,
但是如果一个升序一个降序或者不满足最左前缀法则的话我们就会出现using filesort
查询使用索引都是覆盖索引

image-20220224152555107

4.group by优化

image-20220224153309856

尽量使用联合索引
满足最左前缀法则

5.limit 优化

image-20220224154229962

大数据量情况下由于会先进行排序后进行查询效率较慢
解决办法:覆盖索引+子查询

6.count优化

image-20220224154917653

count(*)效率最高,不取值直接累加

7.update优化

image-20220224155415265

#注意点:innodb引擎是行级锁
begin;
update ...  . .. . where #此时后面条件若没有索引相当于会使用表锁锁住,会大大降低并发的效率
commit;

总结

image-20220224160120961

限时福利1:购课进答疑群专享柳峰(刘运强)老师答疑服务 为什么需要掌握高性能的MySQL实战? 由于互联网产品用户量大、高并发请求场景多,因此对MySQL的性能、可用性、扩展性都提出了很高的要求。使用MySQL解决大量数据以及高并发请求已经是程序员的必备技能,也是衡量一个程序员能力和薪资的标准之一。 为了让大家快速系统了解高性能MySQL核心知识全貌,我为你总结了「高性能 MySQL 知识框架图」,帮你梳理学习重点,建议收藏! 【课程设计】 课程分为四大篇章,将为你建立完整的 MySQL 知识体系,同时将重点讲解 MySQL 底层运行原理、数据库的性能调优、高并发、海量业务处理、面试解析等。 一、性能优化篇: 主要包括经典 MySQL 问题剖析、索引底层原理和事务与锁机制。通过深入理解 MySQL 的索引结构 B+Tree ,学员能够从根本上弄懂为什么有些 SQL 走索引、有些不走索引,从而彻底掌握索引的使用和优化技巧,能够避开很多实战中遇到的“坑”。 二、MySQL 8.0新特性篇: 主要包括窗口函数和通用表表达式。企业中的许多报表统计需求,如果不采用窗口函数,用普通的 SQL 语句是很难实现的。 三、高性能架构篇: 主要包括主从复制和读写分离。在企业的生产环境中,很少采用单台MySQL节点的情况,因为一旦单个节点发生故障,整个系统都不可用,后果往往不堪设想,因此掌握高可用架构的实现是非常有必要的。 四、面试篇: 程序员获得工作的第一步,就是高效的准备面试,面试篇主要从知识点回顾总结的角度出发,结合程序员面试高频MySQL问题精讲精练,帮助程序员吊打面试官,获得心仪的工作机会。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者



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

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

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

打赏作者

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

抵扣说明:

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

余额充值