> 文章列表 > sql优化篇 -入门

sql优化篇 -入门

sql优化篇 -入门

计划3月完成的学习任务,拖延到4月了;浅薄的学习了一个月,将学习到的做个温习回顾(浅薄的学习总结)

概述:

作为一个初学者,以解决业务慢SQL、以及设计数据库为目的,所以本次针对MySQL的重要知识点进行归纳总结,对于数据库底层知识需要阅读相关书籍,如高性能MySQL等,对于实战技巧,则需要再一次次的练习、实战与调试中总结归纳;此篇博客仅作为入门,摘要出对于后端开发的MySQL核心知识点。
[

杂言:

1、MySQL是一个开源的优秀的数据库,于08年被Apache收购,故也存在一定的断供风险。
2、对于数据库,开发者核心是写出优秀的SQL语句。SQL优化是每个后端开发的重要技能,而SQL优化的重点则在于对于数据库索引的优化。索引的优化可解决80%以上的慢SQL问题。
3、数据库的执行过程与SQL写法不一致,优化时建议查看执行顺序,亦或者使用 explain (SQL语句)进行查询。

正文:

1、常用的数据库语句

增删改查:insert,delete,update,select
where:数据库中常用的是where关键字,用于在初始表中筛选查询。它是一个约束声明,用于约束数据,在返回结果集之前起作用。group by:对select查询出来的结果集按照某个字段或者表达式进行分组,获得一组组的集合,然后从每组中取出一个指定字段或者表达式的值。
having:用于对where和group by查询出来的分组经行过滤,查出满足条件的分组结果。它是一个过滤声明,是在查询返回结果集以后对查询结果进行的过滤操作。

UNION 语句:用于将不同表中相同列中查询的数据展示出来;(不包括重复数据)UNION ALL 语句:用于将不同表中相同列中查询的数据展示出来;(包括重复数据)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ysuPzKOP-1680703859975)(null#pic_center)]

2、数据库引擎

逻辑分层
数据库引擎
支持那些引擎:show engines;
查看当前使用的引擎:show variables like ‘%storage_engine%’;

在这里插入图片描述

3、SQL 优化

问题点:性能低、执行时间长、等待时间长、SQL语句欠佳(连接查询)、索引失效、服务器参数设置不合理(缓冲
解析过程:解析过程:https://www.cnblogs.com/annsshadow/p/5037667.html
在这里插入图片描述

4、索引

4.1、索引相当于书的目录,index帮助MySQL高效获取数据的数据结构。索引的数据结构:(树:B树(默认)、HSAH。。。
在这里插入图片描述
在这里插入图片描述

4.2、索引的弊端
1、本身很大,存放在内存/硬盘。正常在硬盘
2、不是所有情况适用:a.少量数据 b.频繁更新的字段 c.很少使用的字段
3、索引会降低增删改的效率
优势
1、明显提高查询效率(降低IO使用率)
2、降低CPU使用率
分类·
单值索引:单列,一个表可以创建多个单值索引
唯一索引:不能重复,如ID
复合索引:多个列构成的索引,相当于二级目录(z:zhao ,name:age ,)
创建索引
create 索引类型 索引名 on 表
create index dept_index on tb(dept);
create unique index name_index on tb(name);
create index dept_name_index on tb(dept,name);
alter table 表名 索引名
alter table tb add index dept_index(dept)
create unique index name_index on tb(name);
create index dept_name_index on tb(dept, name);

5、SQL性能问题

a、分析SQL的执行计划:explain,模拟SQL优化器执行SQL语句
优化方法:官网 https://dev.mysql.com/doc/refman/5.5/en/optimization.html
在这里插入图片描述

查询执行计划:explain—+SQL语句explain select * from tb;
结果分析
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6、案例
7、避免索引失效的一些原则
8、一些其他的优化方法
在这里插入图片描述
在这里插入图片描述

9、SQL排查:慢查询日志

在这里插入图片描述

1·0、分析海量数据