如何查看表索引_mysql索引信息查询

1次阅读

最常用方式是show index命令,可快速列出表中所有索引结构;也可用information_schema.statistics精确筛选、show create table查看创建语句、describe或explain辅助判断索引使用情况。

如何查看表索引_mysql索引信息查询

查看 mysql 表的索引信息,最常用、最直接的方式是使用 SHOW INDEX 命令。它能快速列出表中所有索引的结构细节,包括主键、唯一索引、普通索引和全文索引等。

用 SHOW INDEX 查看索引(推荐首选)

这是开发和运维中最常用的命令,语法简洁,结果直观:

  • 基本写法:先切换数据库,再查索引
    USE mydb;
    SHOW INDEX FROM users;
  • 跨库写法(不需 USE):
    SHOW INDEX FROM users FROM mydb;
  • 注意:SHOW KEYS 是 SHOW INDEX 的完全同义词,效果一致,可互换使用。

通过 INFORMATION_SCHEMA.STATISTICS 精确筛选

适合需要编程调用、批量分析或按条件过滤的场景,比如查找某列上有哪些索引、检查重复索引:

  • 查询指定表的所有索引列:
    select TABLE_NAME, INDEX_NAME, COLUMN_NAME, SEQ_IN_INDEX, INDEX_TYPE
    FROM INFORMATION_SCHEMA.STATISTICS
    WHERE TABLE_SCHEMA = ‘mydb’ AND TABLE_NAME = ‘users’;
  • 查找包含 email 字段的所有索引:
    WHERE COLUMN_NAME = ’email’ AND TABLE_SCHEMA = ‘mydb’;
  • 该方式支持 JOIN 和聚合,适合写成监控脚本或自动化巡检。

用 SHOW CREATE TABLE 查看索引定义语句

如果你想确认索引是怎么创建的(比如前缀长度、是否唯一、注释等),这个命令会返回建表时的完整 SQL:

  • 执行:
    SHOW CREATE TABLE users;
  • 输出中会看到类似:
    PRIMARY KEY (`id`),
    KEY `idx_email` (`email`),
    UNIQUE KEY `uk_phone` (`phone`(11))

    其中 uk_phone 后面的 (11) 表示对 phone 字段前 11 个字符建立前缀索引。

辅助方式:DESCRIBE 和 EXPLAIN

它们不直接列出索引,但能快速判断字段是否有索引,以及查询是否实际用到了索引:

  • DESCRIBE users;SHOW COLUMNS FROM users;
    观察 Key 列:PRI(主键)、UNI(唯一索引)、MUL(普通索引)表示对应字段参与了索引。
  • EXPLAIN SELECT * FROM users WHERE email = ‘a@b.com’;
    重点看 key 字段是否显示索引名,type 是否为 ref/range 等高效类型,验证索引是否生效。
text=ZqhQzanResources