mysql 执行计划_mysql执行计划

执行计划使用explain sql查询。

1、 构造数据

usecoshaho002;drop table if existsinfo;create tableinfo(

idint primary keyAUTO_INCREMENT,

namevarchar(32),

agetinyint,

sexvarchar(8),

addressvarchar(32),

phonevarchar(32),

birthday date,

descriptionvarchar(128)

);alter table info add unique(phone);alter table info add indexname_index(name);alter table info add indexname_age_sex_index(name, age, sex);alter table info addfulltext(description);

describe info;INSERT INTO info VALUES(null, 'hkx1', 1, 'M', 'sc', '1234567890', '1989-01-03', 'chengxuyuan huawei1'),

(null, 'hkx2', 2, 'F', 'sc', '1234567891', '1989-02-03', 'chengxuyuan huawei2'),

(null, 'hkx3', 3, 'M', 'sc', '1234567892', '1989-03-03', 'chengxuyuan huawei3'),

(null, 'hkx4', 4, 'F', 'sc', '1234567893', '1989-07-05', 'chengxuyuan huawei4'),

(null, 'hkx5', 5, 'F', 'sc', '1234567894', '1989-07-04', 'chengxuyuan huawei5'),

(null, 'hkx6', 6, 'M', 'sc', '1234567895', '1989-07-06', 'chengxuyuan huawei6'),

(null, 'hkx7', 7, 'F', 'sc', '1234567896', '1989-07-07', 'chengxuyuan huawei7'),

(null, 'hkx1', 8, 'F', 'sc', '1234567897', '1989-07-08', 'chengxuyuan huawei8'),

(null, 'hkx2', 9, 'F', 'sc', '1234567898', '1989-07-03', 'chengxuyuan huawei9'),

(null, 'hkx3', 10, 'M', 'sc', '1234567899', '1989-01-03', 'chengxuyuan huawei10'),

(null, 'hkx4', 11, 'F', 'sc', '1234567810', '1989-07-03', 'chengxuyuan huawei11'),

(null, 'hkx5', 5, 'F', 'sc', '1234567820', '1989-07-03', 'chengxuyuan huawei12'),

(null, 'hkx6', 6, 'M', 'sc', '1234567830', '1989-02-03', 'chengxuyuan huawei13'),

(null, 'hkx7', 10, 'F', 'sc', '1234567840', '1989-09-03', 'chengxuyuan huawei14'),

(null, 'hkx8', 1, 'M', 'sc', '1234567850', '1989-01-03', 'chengxuyuan huawei1'),

(null, 'hkx9', 13, 'F', 'sc', '1234567860', '1989-06-03', 'chengxuyuan huawei2'),

(null, 'hkx0', 2, 'M', 'sc', '1234567870', '1989-07-03', 'chengxuyuan huawei3');select * from info;

2、 查询执行计划

usecoshaho002;select * frominfo;

explainselect * from info where id = 2;

explainselect * from info where name = 'hkx1';

explainselect * from info where name like 'hkx1%';

explainselect * from info where name like '%1';

explainselect * from info where age = 2;

explainselect * from info where name = 'hkx1' and sex = 'M';

explainselect * from info where name = 'hkx1' and age = 0;

explainselect * from info where name = 'hkx1' and age = 0 and sex ='M';

explainselect * from info where phone = '1234567890';

explainselect * from info where description = 'chengxuyuan huawei1';

explainselect * from info where name = 'hkx1' union select * from info;

2951d566f6b7b6cf978b55c76d87bd49.png

可以看到,查询结果包含id,select_type,table,partitions,type,possible_keys,key,key_len,ref,rows,filtered,Extra组成。

1、 type

type表访问类型,和查询效率紧密相关。type效率从好到坏依次为:

system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL

一般来说,得保证查询至少达到range级别,最好能达到ref。

ALL:全表扫描。

index:扫描全部索引树。

range:扫描部分索引(索引范围扫描)。常见于between、、like等的查询。

ref:非唯一性索引扫描,返回匹配某个单独值的所有行。常见于使用非唯一索查询,组合索引查询;

eq_ref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。常见于主键或唯一索引扫描;

const,system:表最多有一个匹配行,它将在查询开始时被读取,列值当做常量处理。如将使用主键查询。(system是const特例,表只有一行记录)

NULL:MySQL在优化过程中分解语句,执行时甚至不用访问表或索引。

2、  id

select查询的序列号

3、 select_type

select查询的类型,主要是区别普通查询和联合查询、子查询之类的复杂查询。

(1) SIMPLE:查询中不包含子查询或者UNION

(2) 查询中若包含任何复杂的子部分,最外层查询则被标记为:PRIMARY

(3) 在SELECT或WHERE列表中包含了子查询,该子查询被标记为:SUBQUERY

(4) 在FROM列表中包含的子查询被标记为:DERIVED(衍生)

(5) 若第二个SELECT出现在UNION之后,则被标记为UNION;若UNION包含在 FROM子句的子查询中,外层SELECT将被标记为:DERIVED

(6) 从UNION表获取结果的SELECT被标记为:UNION RESULT

4、 table

该行查询所引用的表。

5、 possible_keys

指出MySQL能使用哪个索引在该表中找到行。查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询使用。如果是空的,没有相关的索引。这时要提高性能,可通过检验WHERE子句,看是否引用某些字段,或者检查字段不是适合索引。

6、 key

显示MySQL实际决定使用的键。如果没有索引被选择,键是NULL。

7、 key_len

显示MySQL决定使用的键长度。表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度。如果键是NULL,长度就是NULL。文档提示特别注意这个值可以得出一个多重主键里mysql实际使用了哪一部分。

注:key_len显示的值为索引字段的最大可能长度,并非实际使用长度,即key_len是根据表定义计算而得,不是通过表内检索出的。

8、 ref

显示哪个字段或常数与key一起被使用。

9、 rows

这个数表示mysql要遍历多少数据才能找到,表示MySQL根据表统计信息及索引选用情况,估算的找到所需的记录所需要读取的行数,在innodb上可能是不准确的。

10、 Extra

包含不适合在其他列中显示但十分重要的额外信息。

(1)Only index:意味着信息只用索引树中的信息检索出的,这比扫描整个表要快。

(2)using where:使用上了where限制,表示MySQL服务器在存储引擎受到记录后进行“后过滤”(Post-filter),如果查询未能使用索引,Using where的作用只是提醒我们MySQL将用where子句来过滤结果集。

(3)impossible where: 表示用不着where,一般就是没查出来啥。

(4)Using filesort:MySQL中无法利用索引完成的排序操作称为文件排序,当我们试图对一个没有索引的字段进行排序时,就是filesoft。它跟文件没有任何关系,实际上是内部的一个快速排序。

(5)Using temporary:表示MySQL需要使用临时表来存储结果集,常见于排序和分组查询,使用filesort和temporary的话会很吃力,WHERE和ORDER BY的索引经常无法兼顾,如果按照WHERE来确定索引,那么在ORDER BY时,就必然会引起Using filesort,这就要看是先过滤再排序划算,还是先排序再过滤划算。

参考:http://blog.csdn.net/xifeijian/article/details/19773795

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/575838.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python中cock什么意思_[转载]原创脚本逐步实现Autodcock-Vina的虚拟筛选及筛选后分析...

[转载]原创脚本逐步实现Autodcock-Vina的虚拟筛选及筛选后分析(2013-07-03 11:31:56)标签:转载Vina是在Autodock4基础上改进的算法,相比autodock4而言,具体优势:准确,并行计算(官网数据):AutoDockVina is a…

Entity Framework 4.1 : 贪婪加载和延迟加载

这篇文章将讨论查询结果的加载控制。 EF4.1 允许控制对象之间的关系,当我们进行查询的时候,哪些关系的数据将会被加载到内存呢?所有相关的对象都需要吗?在一些场合可能有意义,例如,当查询的实体仅仅拥有一个…

python数据结构编程_写给Python编程高手之 数据结构

python视频教程栏目介绍Python编程需要注意的关键点。如何在列表,字典,集合中根据条件筛选数据案例:如何在下列列表data中筛选出大于0的数data [1, -1, 2, 3, 4, 7]复制代码使用filter函数,第一个参数为一个函数,也可…

python编写下载器可暂停_Python编写一个优美的下载器

本文实例为大家分享了python编写下载器的具体代码,供大家参考,具体内容如下 #!/bin/python3# author: lidawei# create: 2016-07-11# version: 1.0# 功能说明:# 从指定的URL将文件取回本地#################################################…

修改页面后获得flag_简单的CTF-从JS中获取flag

本文是一篇从合天网安实验室进行实验操作的笔记,一次非常简单地从JS中获取到flag的操作。1. 进入题目页(10.1.1.219:20123)看到一段话,还有一句很明显的提示语句“The evil url is the passkey”,翻译出来就是损坏的url就是flag。下面的英文…

快速下载助手1.1--添加断点下载

在上一章中实现了多线程的断点下载,将快速下载助手添加断点下载功能,明天实现了速率统计功能 效果图如下: 打印信息如下: 欢迎使用快速下载助手-->并不是线程多就下载的快! 文件夹已经存在 默认的线程个数:3 保存路…

mysql查询自定义数据_实现自定义查询的数据库设计及实现(一)

需求先说一下需求:实现用户自定义的查询,用户可以自定义要查询的列、自定义条件条件、自定义排序。除了查询使用外,还可以使用于各个需要根据条件进行约束的业务,如权限;本设计和实现,很大部分是通过数据库…

java 合并流_Java Stream 流实现合并操作示例

本文实例讲述了Java Stream 流实现合并操作。分享给大家供大家参考,具体如下:1. 前言Java Stream Api提供了很多有用的 Api 让我们很方便将集合或者多个同类型的元素转换为流进行操作。今天我们来看看如何合并 Stream 流。2. Stream 流的合并Stream 流合…

java 去掉 t_java中的“\t”

对于初学者来说,java中的"\t"和空格总是让人迷惑,其实很简单,通过一个例子就能很快明白!比如说打印九九乘法表!先来看用空格的效果!1 package cn.edu.nwpu.java;23 public class MultiplicationT…

java service层 事务_Java高并发秒时啊API之Service层1

---2-1 使用Spring托管Service依赖理论----------------------------spring ioc优势(工厂模式):1.对象创建统一托管2.规范的生命周期管理3.灵活的依赖注入4.一致的获取对象Spring IOC 功能的理解DAO依赖Service依赖最终形成一致访问接口;随意访问依赖对象Spring IOC…

zoj 3720

为什么注释掉的地方是错的&#xff1f; 自己的代码好糟烂..... 直接枚举点 判是否在多边形内 加起来求概率 求面积的时候代码写搓了.... 比不过别人两行的代码 而且到现在还找不到错..... #include <iostream> #include <fstream> #include <cstri…

void在java中是什么意思_java中void什么意思

在java中&#xff0c;void代表的意思是“空”&#xff0c;即“什么都不返回”&#xff0c;在方法申明的时候表示该方法没有返回值。void对应着一个Void类&#xff0c;Void类是用final修饰的&#xff0c;是一个不可实例化的占位符类。之前&#xff0c;在学C的数据类型的时候发现…

《设计模式》-模板模式

玩物丧志啊&#xff01;&#xff01;&#xff01;最近总想着玩&#xff0c;休息&#xff0c;结果又耽误了半个月。。唉&#xff01; 惭愧啊。 今天是设计模式的倒数第二个了。。 虽然前面的 忘得差不多了。不过等看完了 要进行总复习&#xff0c;再复习&#xff0c;再回归&…

一看就会之—利用IIS服务发布网站(实践篇)上

转自&#xff1a;http://blog.csdn.net/zwk626542417/article/details/9796259 概述 IIS全称为互联网信息服务&#xff0c;是由微软公司提供的基于运行MicrosoftWindows的互联网基本服务&#xff0c;今天我们主要来看下如何用win7系统自带的IIS服务来发布我们开发的一个简单的…

xp变量 java_winxp系统设置java环境变量的详细教程

我们都知道想要进行java的程序编辑&#xff0c;就要首先在电脑上设置环境变量&#xff0c;这样才能够运行java程序&#xff0c;下面一起看看xp系统的电脑如何设置java变量。1、设置环境变量之前&#xff0c;我们肯定首先需要安装java&#xff0c;首先&#xff0c;找到你安装jav…

java按钮随机移动_java – 使按钮移动触摸我们触摸的确切位置

我创建了一个应用程序,其中有一个按钮在触摸它时移动.现在对于onTouch,我实现了一个不同的类.有两个类,一个是主要的CircleMActivity.java,另一个是onTouch.现在应用程序运行正常,但有一个问题.当我点击按钮并移动它时它正在移动,但按钮和屏幕触摸之间有一个间隙.我想要的是将它…

MySQL性能优化的最佳经验

今天&#xff0c;数据库的操作越来越成为整个应用的性能瓶颈了&#xff0c;这点对于Web应用尤其明显。关于数据库的性能&#xff0c;这并不只是DBA才需要担心的事&#xff0c;而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构&#xff0c;对操作数据库时&#xf…

jspstudy mysql_使用JspStudy集成环境快速部署jsp项目

标签&#xff1a;1. 安装jdk本人网盘资源&#xff1a;https://yunpan.cn/ckZLNbqxkDYYe (提取码&#xff1a;b5e8)去jdk官网下载最新的jdk: http://www.oracle.com/technetwork/java/javase/downloads/jdk-7u2-download-1377129.html2. 配置环境变量&#xff1a;1) 系统变量→新…

IOS7的蛋疼各种收集

------------------ ios7基于viewController隐藏状态条:通过ViewController重载方法返回枚举值的方法来控制状态栏的隐藏和样式。首先&#xff0c;需要在Info.plist配置文件中&#xff0c;增加键&#xff1a;UIViewControllerBasedStatusBarAppearance&#xff0c;并设置为YES&…

php java c_当PHP、Java、C、C++ 这几种编程语言变成汽车是什么样的场景?

在学习和工作中&#xff0c;人们常常会把各种编程语言拿出来做对比&#xff0c;特别是刚刚开始入门学习IT的同学。实际上&#xff0c;每门语言自己的优缺点有时候也正是语言本身的特性&#xff0c;在学习中&#xff0c;我们更应该关心的是应用场景&#xff0c;哪门语言适合哪个…