deepseek回答MySQL 查询表索引的常用方法和详细说明
以下是 MySQL 查询表索引的常用方法和详细说明:
一、使用 SHOW INDEX
命令(最常用)
语法:
sqlCopy Code
SHOW INDEX FROM table_name;
示例:
sqlCopy Code
SHOW INDEX FROM users; -- 查看 users 表的索引
输出字段说明23:
- Non_unique:是否为唯一索引(0 表示唯一,1 表示非唯一)。
- Key_name:索引名称(主键索引名为 PRIMARY)。
- Seq_in_index:索引中的列序号(从 1 开始)。
- Column_name:索引关联的列名。
- Collation:列在索引中的排序方式(A 表示升序,NULL 表示无排序)。
- Cardinality:索引唯一值的估计数(数值越大,索引效率越高)。
- Index_type:索引类型(如 BTREE、HASH)。
二、通过系统表 INFORMATION_SCHEMA.STATISTICS
语法:
sqlCopy Code
SELECT * FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 'table_name';
示例:
sqlCopy Code
SELECT TABLE_NAME, INDEX_NAME, COLUMN_NAME, SEQ_IN_INDEX FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 'orders'; -- 查看 orders 表的索引信息
优点:
- 支持通过 SQL 语句过滤结果(如指定索引名、列名等)23。
三、使用 DESCRIBE
或 EXPLAIN
命令
语法:
sqlCopy Code
DESCRIBE table_name; -- 或简写为 DESC
示例:
sqlCopy Code
DESC products; -- 快速查看表结构及主键索引
说明:
- 仅显示主键索引(
Key
字段为 PRI)和非唯一索引(Key
字段为 MUL)2。
四、其他辅助命令
-
查看建表语句中的索引:
sqlCopy CodeSHOW CREATE TABLE table_name; -- 显示建表语句,包含索引定义:ml-citation{ref="6" data="citationList"}
-
查询索引类型:
sqlCopy CodeSELECT INDEX_NAME, INDEX_TYPE FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 'table_name'; -- 查看索引类型(如 BTREE):ml-citation{ref="2,4" data="citationList"}
五、索引类型说明
MySQL 常见的索引类型包括:
- BTREE:默认类型,支持范围查询和排序45。
- HASH:仅支持等值查询,适用于内存表58。
- FULLTEXT:全文索引,用于文本字段搜索8。
注意事项
- 更新索引统计信息:执行
ANALYZE TABLE table_name;
可更新Cardinality
的估值34。 - 索引维护:频繁增删改操作可能导致索引碎片,需定期优化表(
OPTIMIZE TABLE table_name;
)14。
以上方法适用于 MySQL 5.7 及以上版本,输出结果可能因版本或存储引擎略有差异
https://github.com/godmaybelieve