流苏小筑

mysql性能问题-explain

mysql性能问题-explain

可以通过分析sql执行计划:explain

sql解析过程

首先创建一个表:

create table test(
    id  int(10) not null AUTO_INCREMENT,
    name varchar(30) not null,
    primary key(id)
)engine InnoDB default charset=utf8;

完后我们执行语句: explain select id from test;

可以看到有很多的选项

1.type:索引类型(要对type进行的优化前提是有索引)

system > const > eq_ref > ref > rang > index > all
其中system,const只是理想情况,实际能达到的ref>rang

执行语句 explain select id from test;--- id是索引,只需要扫描索引表,不需要扫描全表。

执行语句 explain select name from test;--- name不是索引需要扫描全表。

2.possible_keys:可能用到的索引

3.key:实际使用到的索引

4.key_len:索引的长度:用于判断复合索引是否被完全使用

现在添加一个字段,创建复合索引
alter table test add name1 varchar(30)
alter table test add index name_name1(name,name1)

创建好复合索引后,我们执行:explain select * from test where name = "zhangsan" and name1 = "zhangsan"

在执行:explain select * from test where name1 = "lisi";

5.ref:指明当前表所参照的字段

6.rows:被索引优化的数据个数

explain select name from test

select name from test;

可以看到被优化的数据有四条

7.Extra

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »