在 MySQL 中使用 EXPLAIN 关键字
MySQL EXPLAIN 提供查询执行计划。可以在 SELECT、INSERT、DELETE、REPLACE 和 UPDATE 开头使用 EXPLAIN。
为了避免数据库中全表扫描,需要使用索引。我们首先创建一个表 −
mysql> create table DemoTable1488 -> ( -> StudentId int, -> StudentName varchar(20), -> StudentAge int -> ); Query OK, 0 rows affected (2.18 sec)
以下是创建索引的查询 −
mysql> create index student_id_index on DemoTable1488(StudentId); Query OK, 0 rows affected (0.90 sec) Records: 0 Duplicates: 0 Warnings: 0
使用 insert 命令向表中插入一些记录-插入一些记录 −
mysql> insert into DemoTable1488 values(101,'Sam',21); Query OK, 1 row affected (0.32 sec) mysql> insert into DemoTable1488 values(102,'Bob',23); Query OK, 1 row affected (0.23 sec) mysql> insert into DemoTable1488 values(103,'David',20); Query OK, 1 row affected (0.21 sec)
使用 select 语句从表中显示所有记录 −
mysql> select * from DemoTable1488;
这将产生以下输出 −
+-----------+-------------+------------+ | StudentId | StudentName | StudentAge | +-----------+-------------+------------+ | 101 | Sam | 21 | | 102 | Bob | 23 | | 103 | David | 20 | +-----------+-------------+------------+ 3 rows in set (0.00 sec)
现在,使用 EXPLAIN −
mysql> explain select * from DemoTable1488 where StudentId=1;
这将产生以下输出 −
+----+-------------+---------------+------------+------+------------------+------------------+---------+-------+------+----------+-------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+---------------+------------+------+------------------+------------------+---------+-------+------+----------+-------+ | 1 | SIMPLE | DemoTable1488 | NULL | ref | student_id_index | student_id_index | 5 | const | 1 | 100.00 | NULL | +----+-------------+---------------+------------+------+------------------+------------------+---------+-------+------+----------+-------+ 1 row in set, 1 warning (0.00 sec)
广告