MYSQL---SQL优化

个人学习笔记,不喜勿喷,有不好的地方请指正!!!

sql优化后期会不断的补充到该文章中

一.插入数据:

1.批量插入(不建议太多,可以分割,500-1000最优)

2.手动事务提交

3.主键顺序插入

4.大批量的插入数据:如果一次性需要插入大批量数据,使用insert语句插入性能较低,此时可以使用Mysql数据库提供的load指令进行插入,操作如下:

MYSQL---SQL优化_第1张图片

二.主键优化:

数据组织方式:

在InnoDB存储引擎中,表数据都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表

页分裂:页可以为空,也可以填充一半,也可以填充100%,每个页包含了2-n行数据(如果一行数据过大,会行溢出),根据主键排列

主键设计原则:满足业务需求的情况下,尽量降低主键的长度,因为二级索引记录的是主键,如果太大的话会占用大量的磁盘空间,而且在搜索的时候会占用大量的磁盘io

插入数据时,尽量选择顺序插入,选择使用auto_increment自增主键

尽量不要使用uuid做主键或是其他的自然主键,如身份证号

业务操作时,避免对主键的修改

三.Order by 优化

MYSQL---SQL优化_第2张图片

四.Group by 优化
根据业务情况.建立适当的索引,

五.Limit 优化
通过覆盖索引加子查询的形式,因为in后面不能有order by  可以使用链表查询

六.Count(优化)
(1).自己计数,用redis在插入的时候+1,删除的时候-1

MYSQL---SQL优化_第3张图片

七.Update 优化
InnoDB的行锁是针对索引加的锁,不是针对记录加的锁,并且该索引不能失效,否则会从行锁升级为表锁

你可能感兴趣的:(mysql,sql,数据库)