mysql show index from table 各参数含义

  • Post author:
  • Post category:mysql


一:介绍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

命令的使用,建议大家亲自运行下文中代码。