摘要:在本教程中,您将学习如何使用 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)
请注意, INDEX
和KEYS
是INDEXES
的同义词, IN
是FROM
的同义词,因此,您可以在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 值,则为空白。
索引类型
表示使用的索引方法,例如BTREE
、 HASH
、 RTREE
或FULLTEXT
。
评论
有关索引的信息未在其自己的列中描述。
索引_评论
显示使用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)
输出是:
要获取contacts
表的不可见索引,请添加WHERE
子句,如下所示:
SHOW INDEXES FROM contacts
WHERE visible = 'NO';
Code language: SQL (Structured Query Language) (sql)
这是输出:
在本教程中,您学习了如何使用MySQL SHOW INDEXES
语句来获取表的索引信息。