要在 MySQL 中查看一个表的所有索引信息,你可以使用 SHOW INDEXESSHOW INDEX FROM 命令。以下是具体的命令格式和示例:

使用 SHOW INDEXES
SHOW INDEXES FROM your_table_name;
  • 1.

或者

SHOW INDEXES IN your_table_name;
  • 1.

这里的 your_table_name 应替换为你想要查询的表名。

示例

假设你有一个名为 my_table 的表,你可以这样查看它的所有索引信息:

SHOW INDEXES FROM my_table;
  • 1.
输出解释

输出结果通常包含以下几列:

  • Table: 表名。
  • Non_unique: 索引是否唯一(0 表示唯一索引,1 表示非唯一索引)。
  • Key_name: 索引名称。
  • Seq_in_index: 在索引中的序列位置。
  • Column_name: 索引列的名称。
  • Collation: 列在索引中的排序顺序(A 表示升序,D 表示降序,NULL 表示自然顺序)。
  • Cardinality: 索引中不同值的数量估计。
  • Sub_part: 如果索引列被部分索引,则此列为索引列的前缀长度;否则为 NULL
  • Packed: 存储压缩信息,如果有的话。
  • Null: 列是否可以包含 NULL 值。
  • Index_type: 索引类型(例如 Btree、Hash 等)。
  • Comment: 附加的注释信息。
  • Index_comment: 索引的注释。
示例输出

假设 my_table 有两个索引:一个是主键索引,另一个是非唯一索引,输出可能如下所示:

+---------+------------+------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table   | Non_unique | Key_name         | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+---------+------------+------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| my_table |          0 | PRIMARY          |            1 | id          | A         |           1 |     NULL | NULL   |      | BTREE      |         |               |
| my_table |          1 | idx_column_name  |            1 | column_name | A         |           1 |     NULL | NULL   |      | BTREE      |         |               |
+---------+------------+------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
使用 EXPLAIN 命令

除了使用 SHOW INDEXES 命令外,你还可以使用 EXPLAIN 命令来查看索引是如何被使用的。例如:

EXPLAIN SELECT * FROM my_table;
  • 1.

这将显示查询计划,其中包含关于索引使用的信息。

总结

使用 SHOW INDEXES 命令可以方便地查看表的所有索引信息。这对于理解索引如何帮助查询优化非常重要。如果你需要进一步分析索引的使用情况,可以考虑使用 EXPLAIN 命令。