之前的知识点的总结:
接着往下学习:
我们只要搞明白这几个就可以:system,const,eq_ref,ref range,index,all
开启慢查询日志不是一直就开启的而是某一个阶段看出来有问题再来开启的。
泛化 实现 组合 聚合 关联 依赖
-----------------
我们总结下explain的参数等。
simple
primary
union
drived
解释:
二周目的explain举例:
type的值:
system:只有一行数据或者是空表
explain select * from ( select * from emp where id=1) a
const:唯一索引或者主键索引返回一条记录
explain select * from emp where id=1;
eq_ref:join一条结果,只会出现在多表关联中
explain select * from emp e left join dept d on e.deptId = d.id
ref:非唯一索引等值或者最左前缀等值查询
索引的最左前缀:https://blog.csdn.net/zzx125/article/details/79678770
explain select * from emp e left join dept d on e.name = d.name
range:使用了索引> < in like......
explain select * from dept where name like '3%'
index:使用索引全表扫描
explain select * from dept where name like '%3%'
all:全表扫描
explain select * from emp
extra的值:
using filesort:name没有索引
explain select * from emp order by name
using index:
explain select id from emp;
using where:
explain select * from emp where name=1;
-----------------
system:全表只有一条记录。
举例:explain select * from (select * from mylock where in=1) a;
const:唯一索引或者主键,返回的值是一行的。
举例:explain select * from mylock where id=1;
eq_ref:看上一篇博客,关键字:连接的是主键或者是唯一的索引。
ref:可以查出来多条记录。关键字:非唯一索引。
举例:
结论:最好将sql优化到range级别。
官方文档太乱了,看下我自己的:https://blog.csdn.net/dennis211/article/details/78170079
57:19
---
关于extra
4
----------------------------------------------
第二部分
----------------------------------------------
explain要是不行的话我们用profile:主要考虑io cpu和内存。
------------------------------------------------
mysql优化篇章:
02:11:16
注意一点:1=1相当于后续的索引的条件都失效了。
not in走的是全表,in走的索引。
优化:https://blog.csdn.net/illusion_you/article/details/79097287
-------------------
集群
主从:从服务器是不对外提供服务的。
原理是从机开两个线程:一个io就是一读一写,读取bin日志,写入中继日志,另一个线程执行sql语句。
主从复制的搭建以后。
----