MySQL查看索引的SQL语句
数据库索引是提高查询效率的重要机制,它可以加快数据库搜索和排序的速度。在MySQL中,我们可以通过查看索引的SQL语句来了解表的索引情况,并进行性能优化。本文将详细介绍MySQL中查看索引的SQL语句。
1. 查看表的所有索引
我们可以使用以下SQL语句来查看表的所有索引:
SHOW INDEX FROM 表名;
示例代码1:
SHOW INDEX FROM employees;
运行结果1:
Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
---|---|---|---|---|---|---|---|---|---|---|---|---|
employees | 0 | PRIMARY | 1 | emp_id | A | 2 | NULL | NULL | YES | BTREE | ||
employees | 1 | idx_name | 1 | emp_name | A | 2 | NULL | NULL | YES | BTREE |
示例代码2:
SHOW INDEX FROM departments;
运行结果2:
Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
---|---|---|---|---|---|---|---|---|---|---|---|---|
departments | 0 | PRIMARY | 1 | dept_id | A | 2 | NULL | NULL | NO | BTREE |
2. 查看指定索引的定义
我们可以使用以下SQL语句来查看指定索引的定义:
SHOW CREATE TABLE 表名;
示例代码3:
SHOW CREATE TABLE employees;
运行结果3:
Table | Create Table |
---|---|
employees | CREATE TABLE employees (emp_id int(11) NOT NULL,emp_name varchar(50) DEFAULT NULL,dept_id int(11) DEFAULT NULL,PRIMARY KEY (emp_id ),KEY idx_name (emp_name ),CONSTRAINT fk_dept_id FOREIGN KEY (dept_id ) REFERENCES departments (dept_id )) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
3. 查看表的索引统计信息
我们可以使用以下SQL语句来查看表的索引统计信息:
SHOW INDEX_STATISTICS WHERE TABLE_SCHEMA = '数据库名' AND TABLE_NAME = '表名';
示例代码4:
SHOW INDEX_STATISTICS WHERE TABLE_SCHEMA = 'mydatabase' AND TABLE_NAME = 'employees';
运行结果4:
Table_schema | Table_name | Non_unique | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
---|---|---|---|---|---|---|---|---|---|---|---|---|
mydatabase | employees | 0 | 1 | emp_id | A | 3 | NULL | NULL | YES | BTREE | ||
mydatabase | employees | 1 | 1 | emp_name | A | 3 | NULL | NULL | YES | BTREE |
4. 查看索引的使用情况
我们可以使用以下SQL语句来查看索引的使用情况:
EXPLAIN SELECT * FROM 表名;
示例代码5:
EXPLAIN SELECT * FROM employees WHERE emp_name = 'John';
运行结果5:
id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
---|---|---|---|---|---|---|---|---|---|
1 | SIMPLE | employees | ref | idx_name | idx_name | 153 | const | 1 | Using index |
总结
以上是MySQL查看索引的SQL语句的详细介绍。通过使用这些SQL语句,我们可以轻松地查看表的索引情况、索引的定义、索引的统计信息以及索引的使用情况,从而进行性能优化。