MySQL中索引优缺点、分类和使用操作详解(2)

select_type:所使用的SELECT查询类型,SIMPLE表示为简单的SELECT,不实用UNION或子查询,就为简单的SELECT。也就是说在该SELECT查询时会使用索引。其他取值,PRIMARY:最外面的SELECT.在拥有子查询时,就会出现两个以上的SELECT。UNION:union(两张表连接)中的第二个或后面的select语句  SUBQUERY:在子查询中,第二SELECT。

table:数据表的名字。他们按被读取的先后顺序排列,这里因为只查询一张表,所以只显示book

type:指定本数据表和其他数据表之间的关联关系,该表中所有符合检索值的记录都会被取出来和从上一个表中取出来的记录作联合。ref用于连接程序使用键的最左前缀或者是该键不是 primary key 或 unique索引(换句话说,就是连接程序无法根据键值只取得一条记录)的情况。当根据键值只查询到少数几条匹配的记录时,这就是一个不错的连接类型。(注意,个人这里不是很理解,百度了很多资料,全是大白话,等以后用到了这类信息时,在回过头来补充,这里不懂对后面的影响不大。)可能的取值有 system、const、eq_ref、index和All

possible_keys:MySQL在搜索数据记录时可以选用的各个索引,该表中就只有一个索引,year_publication

key:实际选用的索引

key_len:显示了mysql使用索引的长度(也就是使用的索引个数),当 key 字段的值为 null时,索引的长度就是 null。注意,key_len的值可以告诉你在联合索引中mysql会真正使用了哪些索引。这里就使用了1个索引,所以为1,

ref:给出关联关系中另一个数据表中数据列的名字。常量(const),这里使用的是1990,就是常量。

rows:MySQL在执行这个查询时预计会从这个数据表里读出的数据行的个数。

extra:提供了与关联操作有关的信息,没有则什么都不写。

上面的一大堆东西能看懂多少看多少,我们最主要的是看possible_keys和key 这两个属性,上面显示了key为year_publication。说明使用了索引。

4.1.1.2、创建唯一索引  

 CREATE TABLE t1

 (

id INT NOT NULL,

name CHAR(30) NOT NULL,

UNIQUE INDEX UniqIdx(id)

 );  

 解释:对id字段使用了索引,并且索引名字为UniqIdx。

 SHOW CREATE TABLE t1\G;

MySQL中索引优缺点、分类和使用操作详解

   要查看其中查询时使用的索引,必须先往表中插入数据,然后在查询数据,不然查找一个没有的id值,是不会使用索引的。

 INSERT INTO t1 VALUES(1,'xxx');

 EXPLAIN SELECT * FROM t1 WHERE id = 1\G;

MySQL中索引优缺点、分类和使用操作详解

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/9dee7e46cb71cd00f6d525cea967b4f3.html