CREATE TABLE `course` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
KEY `my_index` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=latin1;
使用查询:
explain select name from course where name='java';
结果:
+----+-------------+--------+------+---------------+----------+---------+-------+------+--------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+--------+------+---------------+----------+---------+-------+------+--------------------------+
| 1 | SIMPLE | course | ref | my_index | my_index | 52 | const | 1 | Using where; Using index |
+----+-------------+--------+------+---------------+----------+---------+-------+------+--------------------------+
如果name列没有索引的话,explain结果的extra列将是Using where,没有Using index。
接着使用id作条件查询:
explain select name from course where id=1;
explain select * from course where id=1;
结果是:
+----+-------------+--------+-------+---------------+---------+---------+-------+------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+--------+-------+---------------+---------+---------+-------+------+-------+
| 1 | SIMPLE | course | const | PRIMARY | PRIMARY | 4 | const | 1 | |
+----+-------------+--------+-------+---------------+---------+---------+-------+------+-------+
如果这样查询:
explain select id from course where id=1;
结果是:
+----+-------------+--------+-------+---------------+---------+---------+-------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+--------+-------+---------------+---------+---------+-------+------+-------------+
| 1 | SIMPLE | course | const | PRIMARY | PRIMARY | 4 | const | 1 | Using index |
+----+-------------+--------+-------+---------------+---------+---------+-------+------+-------------+
问题:
同样是针对有索引的id(主键)和name列查询,extra列的结果不一样,前者查询id是extra 为空,如果查询整列或name列则是using index,即覆盖查询。后者不管查询什么,都是using where和using index.不清楚为什么。
分享到:
相关推荐
10. **Extra**:包含MySQL解决查询的额外信息,如“Using where”、“Using filesort”和“Using temporary”。 通过分析`EXPLAIN`的结果,我们可以发现查询优化的机会。例如,如果看到"Using filesort",表示MySQL...
8. **extra**:提供关于MySQL如何处理查询的额外信息,如使用了哪些优化策略,是否进行了文件排序等。 通过分析EXPLAIN输出,我们可以识别查询中的瓶颈,比如全表扫描(ALL)、索引未被使用(key为NULL)等情况,...
### MySQL Explain 深度解析 #### 一、Explain 的意义 在数据库查询优化领域,`EXPLAIN` 是一个非常强大的工具,它能够帮助我们分析 `SELECT` 语句的执行过程,揭示出查询效率低下的原因。通过 `EXPLAIN` 的分析...
MySQL提供了`EXPLAIN`工具来帮助我们理解查询执行计划,从而找出潜在的问题并进行相应的优化。本文将深入探讨`EXPLAIN`的各项特性及其应用场景。 #### 二、`EXPLAIN`的基本概念 `EXPLAIN`命令用于展示MySQL执行SQL...
MySQL 的 `EXPLAIN` 命令是一个非常强大的工具,它可以帮助我们理解 MySQL 如何执行查询,并为我们提供优化查询性能的重要信息。通过 `EXPLAIN`,我们可以了解查询计划、表的连接顺序以及所使用的索引等细节。 ####...
MySQL 的 Explain 分析 SQL 语句性能(慢查询和加没加索引) MySQL 的 Explain 分析 SQL 语句性能是数据库性能优化的重要工具之一。通过 Explain 命令可以分析 SQL 语句的执行计划,了解 SQL 语句的执行过程,找出...
`EXPLAIN`命令作为MySQL提供的一种分析工具,能够帮助我们理解SQL查询是如何执行的,从而找出可能存在的性能瓶颈并加以优化。 #### 二、EXPLAIN的基本用法及语法 `EXPLAIN`命令用于展示SQL查询的执行计划,即MySQL...
通过 Explain,可以了解 MySQL 是如何执行查询语句的,并且可以根据 Explain 的结果来优化查询语句。 一、用法 Explain 的用法非常简单,只需要在 SELECT 语句前面加上 EXPLAIN 关键字即可。例如: ```sql EXPLAIN...
### 从Mysql-EXPLAIN探寻数据库查询优化 在数据库管理与优化领域,MySQL的`EXPLAIN`命令是一项非常强大的工具,它可以帮助我们深入了解MySQL如何执行SQL查询,并据此进行优化,提高查询性能。本文将围绕MySQL中的`...
`EXPLAIN` 是 MySQL 提供的一个非常有用的工具,用于展示查询执行计划。通过它,我们可以了解到 SQL 查询是如何被执行的,这对于优化 SQL 语句、提高查询性能至关重要。 #### 二、EXPLAIN 输出字段详解 在使用 `...
**EXPLAIN** 是 MySQL 提供的一个非常有用的工具,它能够帮助用户了解 MySQL 如何执行查询语句,并展示出 MySQL 预估的查询计划。这对于理解 SQL 查询的工作原理、诊断性能问题以及优化查询具有重要意义。 在 MySQL...
MySQL 提供了 `EXPLAIN` 命令来帮助我们查看查询计划,这对于理解 MySQL 如何执行 SQL 查询以及如何进行优化至关重要。 #### 二、EXPLAIN 语法与用法 ##### 2.1 语法 `EXPLAIN` 的基本语法如下: ```sql EXPLAIN...
MySQL中的`EXPLAIN`命令是用于分析SQL查询执行计划的重要工具,它可以帮助数据库管理员和开发者了解MySQL如何处理SQL语句,从而进行性能优化。在深入理解`EXPLAIN`之前,我们先来了解一下数据库优化的基本概念。 ...
MySQL的EXPLAIN命令是数据库管理员和开发者用于分析SQL查询执行计划的重要工具。通过EXPLAIN,我们可以深入了解MySQL如何处理SELECT语句,以及如何连接不同的表,从而优化查询性能和索引设计。 1. **id**: 这是...
MySQL的EXPLAIN命令是数据库管理员和开发者用来分析SQL查询执行计划的重要工具,它能帮助我们理解MySQL如何使用索引来处理SELECT语句,并优化查询性能。本文将深入解析EXPLAIN输出的各项参数,以便更好地理解和优化...
### 深入解析:使用 EXPLAIN 优化 MySQL 查询之旅 #### 一、MySQL简介与特点 MySQL作为一款流行的开源关系型数据库管理系统(RDBMS),因其强大的功能与灵活性,在Web应用程序开发领域占据着举足轻重的地位。它不仅...
MySQL的Explain功能是数据库管理员和开发者用于分析SQL查询执行计划的重要工具。它能帮助我们理解MySQL如何处理SQL语句,从而找出可能的性能瓶颈,优化查询效率。下面是对Explain输出各列的详细解释: 1. **ID列**...
通过explain语句,可以详细查看mysql是如何执行一个查询的。Explain语句执行计划包含多个重要的信息点,以下是一些核心点: 1. id:代表查询中select子句或操作表的顺序。如果id相同,表示一组,按照从上到下的顺序...
- **辅助查询优化器工作**:MySQL 的查询优化器会尝试寻找最优的执行路径,EXPLAIN 的输出可以帮助我们理解优化器的选择逻辑,从而更好地配合优化器的工作。 #### 二、MySQL 查询优化器的工作原理 MySQL 查询优化...