MySQL进阶之SQL优化_com_select+com_insert+com_update+com_delete

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
img

正文

2.用or分割开的条件,如果前面的列有索引,后面的列没有索引,那么涉及的索引都不会被用到。

3.如果不是索引列的第一部分(最左)

4.如果like以%开始

5.如果列类型是字符串,不加引号

5.优化内存空间,对数据库数磁盘碎片进行整理

optimize table test;

执行期间会表锁定,需要在数据库不繁忙的时候执行。

6.优化insert语句

1.一次插入多行,可以使用多个值表的insert语句,例如:insert into test values(1,2),(1,3);

2.索引文件和数据文件分在不同的磁盘存放,利用建表选项。

7.优化group by子句

可以使用order by null避免进行排序。(避免filesort)

8.优化子查询

使用join代替子查询操作。

因为join不需要在内存中创建临时表来完成这个需要2个步骤的工作。

9.优化or条件

对于含有OR 的查询子句,如果要利用索引,则OR 之间的每个条件列都必须用到索引;

如果没有索引,则应该考虑增加索引。

10.使用sql提示

使用use index提供希望mysql参考的索引,节省mysql筛选索引的时间

例如:explain select * from test use index(ind_test) where id= 1;

使用force index参照上面的,这个不是让mysql作为参考,而是强制使用。

11.表结构优化

使用PROCEDURE ANALYSE()函数确定要优化的列。

会返回字段现有数据的最小值和最大值,以及最小和最大长度。最后还会给出合理的建议字段。

12.拆表

垂直拆表,将不常用的列放入另一个表。

水平拆表:表的数据具有独立性,如按照年进行分表。

缺点,查询所有数据需要联合操作。

13.逆规范化

1.增加冗余列,避免查询时的连接操作。

2.增加派生列,避免使用函数多次计算。

3.重新组表,如果许多用户需要查看两个表连接出来的结果,可以组成一个表来减少连接。

4.分表,拆分表

注意:逆规范化虽然带来了速度,但是也对数据完整性提出了要求,一般在应用层进行维护,但是易出疏漏,特别是需求变更时。这里不建议使用触发器,对数据的任何修改触发对复制列或者派生列的相应修改。

14.使用中间表

数据量较大的表,统计时可以创建临时使用的中间表,使用中间表可以提高统计的效率,并且不会对线上应用产生负面影响。

15、优化MySQL配置

以下是我的配置示例。加了skip-name-resolve,快了4-5s。其他配置自行断定

[client]
port=3306
[mysql]
no-beep
default-character-set=utf8
[mysqld]
server-id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
slave-skip-errors=all #跳过所有错误
skip-name-resolveport=3306
datadir=“D:/mysql-slave/data”
character-set-server=utf8
default-storage-engine=INNODB
sql-mode=“STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”

log-output=FILE
general-log=0
general_log_file=“WINDOWS-8E8V2OD.log”
slow-query-log=1
slow_query_log_file=“WINDOWS-8E8V2OD-slow.log”
long_query_time=10

Binary Logging.

log-bin

Error Logging.

log-error=“WINDOWS-8E8V2OD.err”

整个数据库最大连接(用户)数

max_connections=1000

每个客户端连接最大的错误允许数量

max_connect_errors=100

表描述符缓存大小,可减少文件打开/关闭次数

table_open_cache=2000

服务所能处理的请求包的最大大小以及服务所能处理的最大的请求大小(当与大的BLOB字段一起工作时相当必要)

每个连接独立的大小.大小动态增加

max_allowed_packet=64M

在排序发生时由每个线程分配

sort_buffer_size=8M

当全联合发生时,在每个线程中分配

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
真正的技术提升。**

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-ptoM4WNb-1713339002949)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 24
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值