`
myfoot
  • 浏览: 24169 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

MySQL查询explain extra疑惑

阅读更多
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.不清楚为什么。

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    mysql+explain实例分析

    10. **Extra**:包含MySQL解决查询的额外信息,如“Using where”、“Using filesort”和“Using temporary”。 通过分析`EXPLAIN`的结果,我们可以发现查询优化的机会。例如,如果看到"Using filesort",表示MySQL...

    mysqlexplain.ppt

    8. **extra**:提供关于MySQL如何处理查询的额外信息,如使用了哪些优化策略,是否进行了文件排序等。 通过分析EXPLAIN输出,我们可以识别查询中的瓶颈,比如全表扫描(ALL)、索引未被使用(key为NULL)等情况,...

    Mysql Explain

    ### MySQL Explain 深度解析 #### 一、Explain 的意义 在数据库查询优化领域,`EXPLAIN` 是一个非常强大的工具,它能够帮助我们分析 `SELECT` 语句的执行过程,揭示出查询效率低下的原因。通过 `EXPLAIN` 的分析...

    看懂MySQL的SQL EXPLAIN

    MySQL提供了`EXPLAIN`工具来帮助我们理解查询执行计划,从而找出潜在的问题并进行相应的优化。本文将深入探讨`EXPLAIN`的各项特性及其应用场景。 #### 二、`EXPLAIN`的基本概念 `EXPLAIN`命令用于展示MySQL执行SQL...

    Mysql Explain详细解析

    MySQL 的 `EXPLAIN` 命令是一个非常强大的工具,它可以帮助我们理解 MySQL 如何执行查询,并为我们提供优化查询性能的重要信息。通过 `EXPLAIN`,我们可以了解查询计划、表的连接顺序以及所使用的索引等细节。 ####...

    mysql的explain分析sql语句性能(慢查询和加没加索引)

    MySQL 的 Explain 分析 SQL 语句性能(慢查询和加没加索引) MySQL 的 Explain 分析 SQL 语句性能是数据库性能优化的重要工具之一。通过 Explain 命令可以分析 SQL 语句的执行计划,了解 SQL 语句的执行过程,找出...

    Mysql中explain的说明

    `EXPLAIN`命令作为MySQL提供的一种分析工具,能够帮助我们理解SQL查询是如何执行的,从而找出可能存在的性能瓶颈并加以优化。 #### 二、EXPLAIN的基本用法及语法 `EXPLAIN`命令用于展示SQL查询的执行计划,即MySQL...

    MySQL-Explain 详解

    通过 Explain,可以了解 MySQL 是如何执行查询语句的,并且可以根据 Explain 的结果来优化查询语句。 一、用法 Explain 的用法非常简单,只需要在 SELECT 语句前面加上 EXPLAIN 关键字即可。例如: ```sql EXPLAIN...

    从Mysql-EXPLAIN探寻数据库查询优化

    ### 从Mysql-EXPLAIN探寻数据库查询优化 在数据库管理与优化领域,MySQL的`EXPLAIN`命令是一项非常强大的工具,它可以帮助我们深入了解MySQL如何执行SQL查询,并据此进行优化,提高查询性能。本文将围绕MySQL中的`...

    MySQL explain 笔记整理

    `EXPLAIN` 是 MySQL 提供的一个非常有用的工具,用于展示查询执行计划。通过它,我们可以了解到 SQL 查询是如何被执行的,这对于优化 SQL 语句、提高查询性能至关重要。 #### 二、EXPLAIN 输出字段详解 在使用 `...

    MYSQL EXPLAIN详解

    **EXPLAIN** 是 MySQL 提供的一个非常有用的工具,它能够帮助用户了解 MySQL 如何执行查询语句,并展示出 MySQL 预估的查询计划。这对于理解 SQL 查询的工作原理、诊断性能问题以及优化查询具有重要意义。 在 MySQL...

    Mysql Explain 详解

    MySQL 提供了 `EXPLAIN` 命令来帮助我们查看查询计划,这对于理解 MySQL 如何执行 SQL 查询以及如何进行优化至关重要。 #### 二、EXPLAIN 语法与用法 ##### 2.1 语法 `EXPLAIN` 的基本语法如下: ```sql EXPLAIN...

    mysql explain详解

    MySQL中的`EXPLAIN`命令是用于分析SQL查询执行计划的重要工具,它可以帮助数据库管理员和开发者了解MySQL如何处理SQL语句,从而进行性能优化。在深入理解`EXPLAIN`之前,我们先来了解一下数据库优化的基本概念。 ...

    Explain-MySQL.doc#资源达人分享计划#

    MySQL的EXPLAIN命令是数据库管理员和开发者用于分析SQL查询执行计划的重要工具。通过EXPLAIN,我们可以深入了解MySQL如何处理SELECT语句,以及如何连接不同的表,从而优化查询性能和索引设计。 1. **id**: 这是...

    mysql explain详解1

    MySQL的EXPLAIN命令是数据库管理员和开发者用来分析SQL查询执行计划的重要工具,它能帮助我们理解MySQL如何使用索引来处理SELECT语句,并优化查询性能。本文将深入解析EXPLAIN输出的各项参数,以便更好地理解和优化...

    深入解析:使用EXPLAIN优化MySQL查询之旅

    ### 深入解析:使用 EXPLAIN 优化 MySQL 查询之旅 #### 一、MySQL简介与特点 MySQL作为一款流行的开源关系型数据库管理系统(RDBMS),因其强大的功能与灵活性,在Web应用程序开发领域占据着举足轻重的地位。它不仅...

    MySQL的Explain总结.doc

    MySQL的Explain功能是数据库管理员和开发者用于分析SQL查询执行计划的重要工具。它能帮助我们理解MySQL如何处理SQL语句,从而找出可能的性能瓶颈,优化查询效率。下面是对Explain输出各列的详细解释: 1. **ID列**...

    mysql分享-explain讲解

    通过explain语句,可以详细查看mysql是如何执行一个查询的。Explain语句执行计划包含多个重要的信息点,以下是一些核心点: 1. id:代表查询中select子句或操作表的顺序。如果id相同,表示一组,按照从上到下的顺序...

    Mysql Explain 语法详细解析

    - **辅助查询优化器工作**:MySQL 的查询优化器会尝试寻找最优的执行路径,EXPLAIN 的输出可以帮助我们理解优化器的选择逻辑,从而更好地配合优化器的工作。 #### 二、MySQL 查询优化器的工作原理 MySQL 查询优化...

Global site tag (gtag.js) - Google Analytics