索引(三)MySQL SHOW INDEX

浏览: 1160

阅读此文之前建议阅读
索引(一) Mysql创建索引
索引(二) Mysql删除索引

摘要:这篇文章中,我们主要了解下如何使用MYSQL SHOW INDEXS命令来查询索引的信息。

一:介绍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(100NOT NULL,
    last_name VARCHAR(100NOT 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 命令的使用,建议大家亲自运行下文中代码。

翻译参考
1.MySQL SHOW INDEXES

推荐 0
本文由 DataFrog 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册