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是FROM的同义词,因此,可以在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语句获取表的索引信息。