explian type extra补充

drop table  if EXISTS user;
create table user(
	id int primary key,name VARCHAR(20),age int
);
insert into user values (1,'xz',10),(2,'xz2',12);

-- innodb主键id聚集索引,数据和索引放到一块存储
-- 不会发生回表查询,即使extra=null,
-- type=const,extra=null
explain select * from user where id=1;

-- type=ALL,extra=Using where
-- 发生回表查询,where筛选条件不是索引列
-- 查询条件name不是索引列
explain select id,name from user where name='xz';

-- name索引
create index idx_name on user(name);
-- type=ref,extra=Using index
-- 索引覆盖,不会回表查询
explain select id,name from user where name='xz';

-- type=ref,extra=null
-- extra=null这意味着用到了索引,但是部分字段未被索引覆盖,
-- 必须通过“回表”来实现,不是纯粹地用到了索引,也不是完全没用到索引,Extra中为NULL。
explain select id,name,age from user where name='xz';
posted @ 2024-09-19 18:48  干饭达人GoodLucy  阅读(3)  评论(0编辑  收藏  举报