SQL 优化大全
MySQL的基本架构
左边的client可以看成是客户端,客户端有很多,CMD黑窗口,用于学习的WorkBench,Navicat工具,它们都是一个客户端。右边的这一大堆都可以看成是Server(MySQL的服务端),我们将Server在细分为sql层和存储引擎层。当查询出数据以后,会返回给执行器。执行器一方面将结果写到查询缓存里面,当你下次再次查询的时候,就可以直接从查询缓存中获取到数据了。另一方面,直接将结果响应回客户端
查询数据库的引擎
① show engines;
② show variables like “%storage_engine%”;
3)指定数据库对象的存储引擎
create table tb(
id int(4) auto_increment,
name varchar(5),
dept varchar(5),
primary key(id)
) engine=myISAM auto_increment=1 default charset=utf8;
索引、
③ 复合索引
多个列共同构成的索引。比如说我们创建这样一个“复合索引”(name,age),先利用name进行索引查询,当name相同的时候,我们利用age再进行一次筛选。注意:复合索引的字段并不是非要都用完,当我们利用name字段索引出我们想要的结果以后,就不需要再使用age进行再次筛选了。
(1)创建索引的第一种方式
创建单值索引
create index dept_index on tb(dept);
创建唯一索引:这里我们假定name字段中的值都是唯一的
create unique index name_index on tb(name);
创建复合索引
create index dept_name_index on tb(dept,name);
(2)创建索引的第二种方式----------------》语法:alter table 表名 add 索引类型 索引名(字段)
创建单值索引
alter table tb add index dept_index(dept);
创建唯一索引:这里我们假定name字段中的值都是唯一的
alter table tb add unique index name_index(name);
创建复合索引
alter table tb add index dept_name_index(dept,name);
索引删除和索引查询
① 索引删除
语法:drop index 索引名 on 表名;
drop index name_index on tb;
② 索引查询
语法:show index from 表名;
show index from tb;
1)查看执行计划
语法:explain + SQL语句
eg:explain select * from tb;
2)“执行计划”中需要知道的几个“关键字”
id:编号
select_type:查询类型
table:表
type:类型
possible_keys:预测用到的索引
key:实际使用的索引
key_len:实际使用索引的长度
ref:表之间的引用
rows:通过索引查询到的数据量
Extra:额外的信息
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
2021-03-30 webSocket 与HTTP
2021-03-30 java 堆、栈
2021-03-30 HTTPS
2021-03-30 JVM
2021-03-30 SOFA 数据透析
2021-03-30 SOFA 通信