上一篇:
Mysql数据库基本操作(十五)Mysql优化(1)性能分析
文章目录
Mysql的优化手段主要分为索引优化和SQL优化,在学习这两种优化手段之前,我们先来了解一下Mysql内部的自动优化,使用trace对sql优化器进行跟踪。
1,使用trace跟踪sql优化器
1,在介绍怎么使用trace之前先介绍一下mysql的整体架构
可以看到,在这个架构中存在一个优化器,这个优化器会对我们写的sql进行微调,使其在执行过程中更加符合mysql架构,获得更高的效率,我们可以使用trace语句跟踪mysql内部到底是怎样对这些sql进行微调的,下面来介绍trace的使用。
2,打开trace,设置格式为.JSON,并设置trace最大能够使用的内存大小,避免解析过程中因为默认内存过小而不能够完整展示。
set optimizer_trace="enabled=on",end_markers_in_json=on;
set optimizer_trace_max_mem_size=1000000;
3,随便执行一句sql,例如
select * from user a,user_role b,role c where a.uid=b.uid and b.rid =c.rid;
(该数据库中的数据在上一篇博客中有提供)
4,查看mysql自带的数据库information_schema中的数据表optimizer_trace,以json格式返回mysql优化器优化上一条语句的过程。
select * from information_schema.optimizer_trace \G;
注意:要在命令行界面执行该条语句,因为在navicat中识别不了\G。
这里仅仅是介绍了如何返回这个json格式的结果,至于这个结果怎么读取,感兴趣的朋友可以继续深入了解。
2,索引优化
2.1 准备数据
create table tb_seller(
sellerid varchar (100) ,name varchar (100) ,
nickname varchar (50),password varchar (60),status varchar (1),address varchar (100) ,createtime datetime ,primary key (sellerid)
);
insert into tb_seller(sellerid, name, nickname, password,status,address,createtime) values ('oppo','oppo科技有限公司','oppo官方旗舰店', 'e10adc3949ba59abbe56e057f20f883e','0','北京市', '2088-01-01 12:00:00');
insert into tb_seller(sellerid, name, nickname, password,status,address,createtime) values ('ourpalm','掌趣科技股份有限公司','掌趣小店','e10adc3949ba59abbe56e057f20f883e' , '1','北京市','2088-01-01 12:00:00');
insert into tb_seller(sellerid, name, nickname, password,status,address,createtime) values ( 'qiandu' , '千度科技','千度小店' , ' e10adc3 949ba59abbe56e057f20f883e' , '2', '北京市', '2088-01-0l 12:00:00') ;
insert into tb_seller(sellerid, name, nickname, password,status,address,createtime) values