MySQL-SQL优化

优化步骤:(定位到需要优化的SQL)

1.查看SQL执行效率

目的:查看数据库是以什么操作为主。
show global status like ‘Com----’; 查看数据库全局的操作的次数,
在这里插入图片描述
show global status like ‘Innodb_rows_%’ 针对Innodb存储引擎

2、定位低效率执行SQL

  • 慢查询日志
  • show proceslist: 查看实时SQL执行情况

3、explain分析执行计划

explain 查询SQL语句的查询计划

索引的使用

索引是数据库优化的常用也是最重要的手段之一,通过索引通常可以帮助用户解决大多数的MySQL的性能优化问题

SQL优化

1、大批量插入数据

当使用load命令导入数据的数据时,适当的设置可以提升效率
对Innodb类型的表,可以有以下几种方式提升效率

  • 主键顺序插入
    因为Innodb类型的表是按照主键的顺序保存的,所以将导入数据按照主键的顺序排列,可以有效的提高导入数据的效率。
  • 关闭唯一性校验:
    导入数据之前set unique_checks=0,关闭唯一性校验,导入结束后设为1恢复唯一性校验,可提升导入效率
  • 手动提交事务:
    导入前关闭自动提交,导入后开启自动提交

2、优化insert语句

  • 如需要同时对一张表插入很多行数据时,应该尽量使用多个值表的insert语句,这种方式可以大大缩短客户端与数据库之间的连接、关闭等消耗。使效率比分开执行的单个insert语句块
  • 在事务中进行数据插入: 手动开启事务提交
  • 数据有序插入:按照主键顺序插入

3、 优化oder by 语句

两种排序方式

  • Filesort排序
    通过对返回数据进行排序,所有不是通过索引直接返回排序结果的排序都是Filesort排序
    -using index
    通过索引顺序扫描直接返回有序数据,不需要额外排序,操作效率高,推荐使用

优化目标:尽量减少额外排序,通过索引直接返回排序数据。where条件和order by使用相同的索引并且order by的顺序和索引和索引顺序相同,并且order by的字段都是升序或者都是降序。否则肯定需要额外的操作,这样就会出现Filesort。

Filesort优化

  1. 两次扫描算法:MySQL4.1之前使用该排序算法
  2. 一次扫描算法

3、 优化group by 语句

  • 加order by null:只分组不排序
  • 使用index排序,不使用临时表

3、 优化嵌套语句

  • 避免使用子查询,可使用多表联查 替代子查询

3、 优化or 条件

or之间的每个条件列都必须使用到索引,而且不能使用复合索引;如果没有索引,则应该考虑增加索引。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值