mysql查看索引命令

mysql查看索引命令
最新回答
墨语三千

2020-09-22 02:20:31

在 MySQL 中,查看索引信息是优化查询性能的重要步骤。以下是常用的索引查看方法及具体操作示例:

1. 使用 SHOW INDEX 命令

功能:直接显示表的索引定义及结构信息。语法

SHOW INDEX FROM 表名;

输出字段说明

  • Index_Name:索引名称。
  • Column_Name:索引包含的列名。
  • Sub_part:前缀索引的列前缀长度(如 VARCHAR(100) 只索引前 10 个字符)。
  • Non_unique:是否允许重复值(0 为唯一索引,1 为非唯一)。
  • Index_type:索引类型(如 BTREE、HASH)。
  • Comment:索引的注释信息(如 FULLTEXT 表示全文索引)。

示例

SHOW INDEX FROM employees;2. 使用 EXPLAIN 分析查询索引使用

功能:分析查询语句的执行计划,显示是否使用了索引及索引效率。语法

EXPLAIN SELECT * FROM 表名 WHERE 条件;

关键输出字段

  • possible_keys:可能使用的索引列表。
  • key:实际使用的索引名称(若为 NULL 则未使用索引)。
  • key_len:索引使用的字节数(反映索引列的覆盖范围)。
  • type:连接类型(如 ref 表示使用了索引,ALL 表示全表扫描)。

示例

EXPLAIN SELECT * FROM employees WHERE department_id = 10;3. 查询 INFORMATION_SCHEMA 元数据表

功能:获取索引的详细统计信息(如基数、大小等)。常用表

  • STATISTICS:索引的统计信息(基数、索引大小等)。
  • KEY_COLUMN_USAGE:索引列的详细定义。

示例 1:查看表的索引基数和大小

SELECT table_name, index_name, cardinality, index_length FROM INFORMATION_SCHEMA.STATISTICS WHERE table_schema = '数据库名' AND table_name = '表名';

示例 2:查看索引列的约束信息

SELECT table_name, column_name, constraint_name FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE table_schema = '数据库名';总结与优化建议
  1. 快速查看索引结构:优先使用 SHOW INDEX。
  2. 分析查询索引使用:通过 EXPLAIN 检查查询是否有效利用索引。
  3. 获取统计信息:从 INFORMATION_SCHEMA 中提取索引基数、大小等数据,辅助优化。
  4. 注意事项

    索引并非越多越好,需权衡查询速度与写入性能。

    定期使用 ANALYZE TABLE 表名 更新索引统计信息,确保优化器选择最佳执行计划。

通过组合使用这些命令,可以全面掌握 MySQL 索引的使用情况,从而针对性地优化数据库性能。