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:额外的信息



posted @   KLAPT  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.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 通信
点击右上角即可分享
微信分享提示