MYSQL-查看数据表拥有的索引语法(二十二)
13.7.5.22 SHOW INDEX 语句
SHOW {INDEX | INDEXES | KEYS}
{FROM | IN} tbl_name
[{FROM | IN} db_name]
[WHERE expr]
SHOW INDEX
返回表索引信息。格式类似于ODBC中的SQLStatistics调用。对于表中的任何列,此语句都需要一些特权。
mysql> SHOW INDEX FROM City\G
*************************** 1. row ***************************
Table: city
Non_unique: 0
Key_name: PRIMARY
Seq_in_index: 1
Column_name: ID
Collation: A
Cardinality: 4188
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
Index_comment:
*************************** 2. row ***************************
Table: city
Non_unique: 1
Key_name: CountryCode
Seq_in_index: 1
Column_name: CountryCode
Collation: A
Cardinality: 232
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
Index_comment:
mysql> show index from city from world \G
*************************** 1. row ***************************
Table: city
Non_unique: 0
Key_name: PRIMARY
Seq_in_index: 1
Column_name: ID
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
Index_comment:
*************************** 2. row ***************************
Table: city
Non_unique: 1
Key_name: CountryCode
Seq_in_index: 1
Column_name: CountryCode
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
Index_comment:
2 rows in set (0.01 sec)
mysql>
mysql> SHOW INDEX FROM world.City;
+-------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| city | 0 | PRIMARY | 1 | ID | A | 0 | NULL | NULL | | BTREE | | |
| city | 1 | CountryCode | 1 | CountryCode | A | 0 | NULL | NULL | | BTREE | | |
+-------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
2 rows in set (0.00 sec)
mysql>
db_name.tbl_name 语法的替代方法是 tbl_name FROM db_name 。 这两个语句是等效的
SHOW INDEX FROM mytable FROM mydb;
SHOW INDEX FROM mydb.mytable;
可以给出该子句来选择 rows 使用更一般的条件,如第 24.8 节“ SHOW 语句的扩展”中所述。WHERE
SHOW INDEX
返回以下内容 领域:
-
Table
表的名称。
-
Non_unique
如果索引不能包含重复项,则为0,如果可以,则为1。
-
Key_name
索引的名称。如果索引是主键,则名称始终为primary。
-
Seq_in_index
索引中的列序列号,从1开始。
-
Column_name
列的名称。
-
Collation
列在索引中的排序方式。这可以有值A(升序)或NULL(未排序)。
-
Cardinality
对索引中唯一值数量的估计。要更新此数字,请运行ANALYZE TABLE或(对于MyISAM表)myisamchk -a。
基数是根据存储为整数的统计数据计算的,因此即使对于小表,该值也不一定是精确的。基数越高,MySQL在执行连接时使用索引的可能性就越大。
-
Sub_part
索引前缀。也就是说,如果列仅被部分索引,则索引字符数为NULL,如果整个列被索引,则为NULL。
注意
前缀限制以字节为单位。但是,CREATE TABLE、ALTER TABLE和CREATE index语句中索引规范的前缀长度被解释为非二进制字符串类型(CHAR、VARCHAR、TEXT)的字符数和二进制字符串类型的字节数(binary、VARBINARY和BLOB)。在为使用多字节字符集的非二进制字符串列指定前缀长度时,请考虑这一点。有关索引前缀的其他信息,请参见第 8.3.4 节“列索引”和第 13.1.14 节“CREATE INDEX 语句”。
-
Packed
指示密钥的打包方式。如果不是,则为NULL。
-
Null
如果列可能包含NULL值,则包含“是”,否则包含“”。
-
Index_type
使用的索引方法(BTREE、FULLTEXT、HASH、RTREE)。
-
Comment
有关索引的信息未在其自己的列中描述,例如如果索引被禁用则为
disabled
。 -
Index_comment
创建索引时为索引提供的具有comment属性的任何注释。
有关 table 索引的信息也可从 STATISTICS
表中获得。参见第 24.3.24 节“INFORMATION_SCHEMA STATISTICS 表”。``
您可以使用 mysqlshow -k db_name tbl_name
命令列出表的索引。
有关表索引的信息也可以从INFORMATION_SCHEMA STATISTICS
表中获得。请参阅第24.3.24节“INFORMATION_SCHEMA STATISTICS ”。
您可以使用mysqlshow -k db_name tbl_name
命令列出表的索引。