MySQL索引全览指南发布,数据库管理员必备索引查看技巧

文章导读
SHOW INDEX FROM table_name; 这就是查看MySQL表索引的最基本命令,它会列出表的所有索引信息,包括主键、唯一索引、普通索引等。结合EXPLAIN SELECT * FROM table_name WHERE id=1; 可以直观看到索引的使用情况。管理员常用这些技巧快速诊断查询慢的原因。
📋 目录
  1. 查看索引基础命令
  2. EXPLAIN分析索引使用
  3. 信息模式下查看所有索引
  4. 检查索引状态和大小
  5. 常见索引问题诊断
  6. 全局索引概览
A A

SHOW INDEX FROM table_name; 这就是查看MySQL表索引的最基本命令,它会列出表的所有索引信息,包括主键、唯一索引、普通索引等。结合EXPLAIN SELECT * FROM table_name WHERE id=1; 可以直观看到索引的使用情况。管理员常用这些技巧快速诊断查询慢的原因。

查看索引基础命令

使用 SHOW INDEX FROM your_table_name; 命令可以查看指定表的索引信息。输出包括 Key_name(索引名)、Seq_in_index(列序列)、Column_name(列名)、Non_unique(是否唯一)等关键字段。通过这个命令,你能快速了解表上有哪些索引。

EXPLAIN分析索引使用

EXPLAIN SELECT * FROM users WHERE age > 18; 这个命令会显示查询执行计划,包括key字段显示使用的索引,rows估算扫描行数,Extra显示额外信息如Using index。如果key为NULL,说明没用上索引,需要优化。

信息模式下查看所有索引

SELECT * FROM information_schema.statistics WHERE table_schema='your_database' AND table_name='your_table'; 这个查询能获取更详细的索引统计,包括Cardinality(基数估算),有助于判断索引是否失效或需要重建。

检查索引状态和大小

SHOW TABLE STATUS LIKE 'table_name'; 查看表的索引大小和行数。结合ANALYZE TABLE table_name; 可以更新索引统计,让优化器有更准确的选择。对于大表,定期analyze很重要。

MySQL索引全览指南发布,数据库管理员必备索引查看技巧

常见索引问题诊断

如果查询慢,先用EXPLAIN看type是否为ALL或index,key是否NULL。常见问题是LIKE '%xx%'不走索引,或函数包裹列导致失效。解决办法:调整查询写法,或加覆盖索引。

全局索引概览

要查看整个数据库所有表的索引:SELECT table_name, index_name, column_name FROM information_schema.statistics WHERE table_schema='db_name' ORDER BY table_name, index_name; 这个SQL超级实用,一次性看全。

FAQ
Q: 如何判断索引是否在使用?
A: 用EXPLAIN,看key字段是否有值,type不是ALL。
Q: 索引太多有什么坏处?
A: 增加写操作开销,占用空间,定期检查删除无效索引。
Q: 怎么重建损坏索引?
A: OPTIMIZE TABLE table_name; 或 ALTER TABLE table_name ENGINE=InnoDB;
Q: 查看索引的SQL性能吗?
A: 是的,这些查看命令很快,不影响生产。