MySQL SHOW INDEXES

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

MySQL SHOW INDEXES命令简介

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

SHOW INDEXES FROM table_name;
Code language: SQL (Structured Query Language) (sql)

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

如果没有连接任何数据库或者想要获取不同数据库中表的索引信息,可以指定数据库名称:

SHOW INDEXES FROM table_name 
IN database_name;
Code language: SQL (Structured Query Language) (sql)

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

SHOW INDEXES FROM database_name.table_name;
Code language: SQL (Structured Query Language) (sql)

请注意, INDEXKEYSINDEXES的同义词, INFROM的同义词,因此,您可以在SHOW INDEXES列中使用这些同义词。例如:

SHOW INDEX IN table_name 
FROM database_name;
Code language: SQL (Structured Query Language) (sql)

或者

SHOW KEYS FROM tablename
IN databasename;Code language: SQL (Structured Query Language) (sql)

SHOW INDEXES返回以下信息:

桌子

表的名称

非唯一的

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

键名

索引的名称。主键索引的名称始终为PRIMARY

索引中的序列

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

列名

列名

整理

排序规则表示列在索引中的排序方式。 A表示升序, B表示降序,或者NULL表示未排序。

基数

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

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

子部分

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

包装的

指示密钥如何打包;如果不是,则为 NUL。

无效的

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

索引类型

表示使用的索引方法,例如BTREEHASHRTREEFULLTEXT

评论

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

索引_评论

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

可见的

索引对于查询优化器是否可见或不可见;如果是, YES ;如果NO ,则为“否”。

表达

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

过滤索引信息

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

SHOW INDEXES FROM table_name
WHERE condition;
Code language: SQL (Structured Query Language) (sql)

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

SHOW INDEXES FROM table_name
WHERE VISIBLE = 'NO';
Code language: SQL (Structured Query Language) (sql)

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'
);
Code language: SQL (Structured Query Language) (sql)

以下命令返回contacts表中的所有索引信息:

SHOW INDEXES FROM contacts;
Code language: SQL (Structured Query Language) (sql)

输出是:

MySQL SHOW INDEXES - get all indexes

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

SHOW INDEXES FROM contacts
WHERE visible = 'NO';
Code language: SQL (Structured Query Language) (sql)

这是输出:

MySQL SHOW INDEXES - get invisible indexes

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

本教程有帮助吗?