MySQL 查看索引

摘要:在本教程中,您将学习如何使用MySQL SHOW INDEXES命令从表中查询索引信息。

MySQL SHOW INDEXES命令简介

要查询表的索引信息,请使用SHOW INDEXES语句,如下所示:

SHOW INDEXES FROM table_name;

要获取表的索引,请在FROM关键字之后指定表名称。
该语句将返回与当前数据库中的表关联的索引信息。

如果您未连接到任何数据库,或者想要获取其他数据库中表的索引信息,则可以指定数据库名称:

SHOW INDEXES FROM table_name 
IN database_name;

以下查询与上面的查询类似:

SHOW INDEXES FROM database_name.table_name;

请注意,INDEX和KEYS是INDEXES的同义词,IN是FRO​​M的同义词,因此,可以在SHOW INDEXES列中使用这些同义词。
例如:

SHOW INDEX IN table_name 
FROM database_name;

要么

SHOW KEYS FROM tablename
IN databasename;

SHOW INDEXES返回以下信息:

表名

非独特

如果索引可以包含重复项,则为1;如果不能包含重复项,则为0。

key_name

索引名称。
主键索引始终具有PRIMARY的名称。

seq_in_index

索引中的列序号。
第一列序列号从1开始。

column_name

列名

校对

排序规则表示如何在索引中对列进行排序。
A表示升序,B表示降序,或NULL表示未排序。

基数

基数在索引中返回估计的唯一值数量。

请注意,基数越高,查询优化器使用索引进行查找的机会就越大。

sub_part

索引前缀。
如果整个列都已索引,则为null。
否则,如果列被部分索引,它会显示索引字符的数量。

包装好的

指示密钥的包装方式;如果不是,则为NUL。

空值

如果该列可能包含NULL值,则为YES,否则为空。

index_type

表示使用的索引方法,例如BTREE,HASH,RTREE或FULLTEXT。

评论

有关索引的信息未在其自己的列中描述。

index_comment

显示使用COMMENT属性创建索引时指定索引的注释。

可见

索引对于查询优化器是可见还是不可见;如果是,则为是,否则为否。

表达

如果索引使用表达式而不是列或列前缀值,则该表达式指示键部分的表达式,并且column_name列也为NULL。

筛选索引信息

要过滤索引信息,请使用WHERE子句,如下所示:

SHOW INDEXES FROM table_name
WHERE condition;

您可以使用SHOW INDEXES语句返回的任何信息来过滤索引信息。
例如,以下语句仅返回表的不可见索引:

SHOW INDEXES FROM table_name
WHERE VISIBLE = 'NO';

MySQL SHOW INDEXES示例

我们将创建一个名为contacts的新表来演示SHOW INDEXES命令:

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;

输出为:

要获取联系人表的不可见索引,请添加WHERE子句,如下所示:

SHOW INDEXES FROM contacts
WHERE visible = 'NO';

这是输出:

在本教程中,您学习了如何使用MySQL SHOW INDEXES语句获取表的索引信息。

日期:2019-11-20 08:52:14 来源:oir作者:oir