CREATE TABLE book
(
bookid INT NOT NULL,
bookname VARCHAR(255) NOT NULL,
authors VARCHAR(255) NOT NULL,
info VARCHAR(255) NULL,
comment VARCHAR(255) NULL,
year_publication YEAR NOT NULL,
INDEX(year_publication) # 最基本的索引,没有唯一性限制,只是加快查询速度
);
explain select * from book where year_publication=1990
返回结果:
(1)select_type行指定所使用的SELECT查询类型,这里值为SIMPLE,表示简单的SELECT,不使用UNION或子查询。其他可能的取值有PRIMARY、UNION、SUBQUERY等。
(2)table行指定数据库读取的数据表的名字,它们按被读取的先后顺序排列。
(3)type行指定了本数据表与其他数据表之间的关联关系,可能的取值有system、const、eq_ref、ref、range、index和All。
(4)possible_keys行给出了MySQL在搜索数据记录时可选用的各个索引。
(5)key行是MySQL实际选用的索引。
(6)key_len行给出索引按字节计算的长度,key_len数值越小,表示越快。
(7)ref行给出了关联关系中另一个数据表里的数据列名。
(8)rows行是MySQL在执行这个查询时预计会从这个数据表里读出的数据行的个数。
(9)Extra行提供了与关联操作有关的信息。
可以看到,possible_keys和key的值都为year_publication,查询时使用了索引。
参考书籍: mysql 8 入门到精通