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';