一:介绍MySQL SHOW INDEXS 命令
查询一个表中的索引,我们可以像下面这样使用
SHOW INDEXS
语句
SHOW INDEXES FROM table_name;
获取表的索引,注意要在
FROM关键字
后指定表名,之后上面的语句就会返回与当前数据库中的表关联的索引信息。
同时也可以指定数据库的名字
SHOW INDEXES FROM table_name
IN database_name;
或者是这样的
SHOW INDEXES FROM database_name.table_name;
二:MySQL SHOW INDEXES 举例
首先创建一个命名为
contacts
的表,然后用这个表来展示
SHOW INDEXS
命令的使用
CREATE TABLE contacts(
contact_id INT AUTO_INCREMENT,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
email VARCHAR(100),
phone VARCHAR(20),
PRIMARY KEY(contact_id),
UNIQUE(email),
INDEX phone(phone) INVISIBLE,
INDEX name(first_name, last_name) comment 'By first name and/or last name'
);
使用下面的命令就能返回
contacts
表所有的索引信息
SHOW INDEXES FROM contacts;
结果如下:
下面我们一起了解下返回的这张表的含义:
1.Table:
表名
2.Non_unique:
如果索引不能包括重复值则为0,如果可以则为1。也就是平时所说的唯一索引。
3.Key_name 索引名称
,如果名字相同则表明是同一个索引,而并不是重复,比如上图中的第四、五条数据,索引名称都是
name
,其实是一个联合索引。
4.Seq_in_index
索引中的列序列号,从1开始。上图中的四、五条数据,
Seq_in_index
一个是1一个是2,就是表明在联合索引中的顺序,我们就能推断出联合索引中索引的前后顺序。
5.Column_name
索引的列名。
6.Collation
指的是列以什么方式存储在索引中,大概意思就是字符序。
7.Cardinality
是基数的意思,表示索引中唯一值的数目的估计值。我们知道某个字段的重复值越少越适合建索引,所以我们一般都是根据
Cardinality
来判断索引是否具有高选择性,如果这个值非常小,那就需要重新评估这个字段是否适合建立索引。
8.Sub_part
前置索引的意思,如果列只是被部分地编入索引,则为被编入索引的字符的数目。如果整列被编入索引,则为NULL。
9.Packed
指示关键字如何被压缩。如果没有被压缩,则为NULL。压缩一般包括压缩传输协议、压缩列解决方案和压缩表解决方案。
10.Null
如果列含有NULL,则含有YES。
11.Index_type
表示索引类型,Mysql目前主要有以下几种索引类型:FULLTEXT,HASH,BTREE,RTREE。
12.Comment Index_comment
注释的意思。
总结下,这篇文章主要是探讨了
MySQL SHOW INDEX
命令的使用,建议大家亲自运行下文中代码。