MySQL 如何查看设置的索引
在MySQL中,索引是非常重要的,可以极大地加快查询的速度。但是,有时候我们需要查看在MySQL中设置了哪些索引,以方便进行一些优化或者调试工作。那么,如何在MySQL中查看设置的索引呢?本文将为您详细介绍。
阅读更多:MySQL 教程
1.使用SHOW INDEXES命令查看表中的索引
在MySQL中,使用SHOW INDEXES命令可以查看表中的所有索引。例如,我们有一张名为student的表,可以使用以下命令查看他的所有索引:
SHOW INDEXES FROM student;
执行结果如下:
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| student | 0 | PRIMARY | 1 | id | A | 7 | NULL | NULL | BTREE | |||
| student | 1 | age_idx | 1 | age | A | 7 | NULL | NULL | YES | BTREE |
可以看到,student表中设置了两个索引,一个是PRIMARY主键索引,另一个是age_idx的普通索引。可以通过Non_unique列来判断一个索引是否唯一,1表示不唯一,0表示唯一。Seq_in_index列表示索引中该列的顺序。
2.使用EXPLAIN命令查看SQL语句中使用的索引
有时候,我们需要查看SQL语句中使用了哪些索引,这时候就可以使用EXPLAIN命令。该命令会输出SQL语句的执行计划,包括执行顺序、使用的索引等信息。例如,我们有一条查询语句:
SELECT * FROM student WHERE age > 18;
我们可以使用以下命令查看执行计划:
EXPLAIN SELECT * FROM student WHERE age > 18;
执行结果如下:
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | SIMPLE | student | NULL | ALL | age_idx | NULL | NULL | NULL | 7 | 28.57 | Using where |
可以看到,该语句使用了age_idx索引,并且使用了where条件。
3.使用information_schema系统表查看索引
MySQL还提供了许多系统表,可以用来查询数据库中各种信息。其中,information_schema表是最常用的。我们可以使用information_schema.statistics表来查看某个表的索引。例如,我们有一张student表,可以使用以下命令查看其索引:
SELECT INDEX_NAME,COLUMN_NAME FROM information_schema.statistics WHERE TABLE_NAME='student';
执行结果如下:
| INDEX_NAME | COLUMN_NAME |
|---|---|
| PRIMARY | id |
| age_idx | age |
可以看到,该表设置了两个索引,一个是主键索引(PRIMARY),一个是age_idx普通索引。
结论
本文介绍了在MySQL中如何查看设置的索引。通过使用SHOW INDEXES命令、EXPLAIN命令和information_schema系统表,我们可以轻松地查看任何表的索引,以方便我们进行优化和调试。
极客笔记