`
中国爪哇程序员
  • 浏览: 164972 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

第四节 mysql 执行计划

阅读更多
SQL 是第四代编程语言。特点是并不关心实现细节,只关心想做些什么,需要什么东西。由于这个原因,并不清楚数据库是如何查询,有时写出的SQL往往执行效率低下。比如在一个表中建了索引,由于不注意细节,写出的SQL并不走索引。
通过执行计划可来检查SQL的执行。

这里对执行计划做了总结

首先建个user表,
CREATE TABLE `user` (
  `user_id` int(11) NOT NULL auto_increment,
  `name` varchar(255) NOT NULL,
  `age` int(11) default NULL,
  `depart_id` int(11) NOT NULL,
  PRIMARY KEY  (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk |

做一个简单的执行计划:
mysql> explain  select * from user where name ='a';
+----+-------------+-------+------+---------------+------------+---------+-------+------+-------------+
| id | select_type | table | type | possible_keys | key        | key_len | ref   | rows | Extra       |
+----+-------------+-------+------+---------------+------------+---------+-------+------+-------------+
|  1 | SIMPLE      | user  | ref  | index_name    | index_name | 512     | const |    1 | Using where |
+----+-------------+-------+------+---------------+------------+---------+-------+------+-------------+
1 row in set

对上面的结果进行说明:

(1)id :包含一组数字,表示查询中执行select子句或操作表的顺序
      id相同,执行顺序由上至下
如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行

(2)select_type:
    SIMPLE :简单表,没有表关联和子查询
     PRIMARY:主查询
     UNION :UNION中第二个或者后面的查询语句
     SUBQUERY:子查询第一个select
(3)table:查询语句中涉及的表名
(4)type:表的连接类型,按照执行效率由高到低,表示如下:
    system:
    const:
    eq_ref:
    ref:
    ref_or_null:
    inde_merge:
    unique_subquery:
    index_subquery:
    range:
    index:
    all:    
   具体含义可去MYSQL的官方网站查询
(5)possible_keys:指出MySQL能使用哪个索引在表中找到行,查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询使用
  (6)key:执行SQL真正用到的索引,如果没有使用索引,即为null
   (7)key_len:索引字段长度
   (8)rows:扫描行数
   (9)Extra:执行情况描述说明
  
个人觉得执行计划最大一点好处就是用来评测SQL是否走索引。如果没有走,可以分析原因。索引是用空间换时间,如果没有走索引,就白白浪费数据库宝贵的空间,更重要的是使SQL执行低下

关于type 描述,可参看附件,附件是在学习sql 执行计划时,搜到的一个很不错的PPT。在此感谢作者的分享。

分享到:
评论

相关推荐

    2017最新老男孩MySQL高级专业DBA实战课程全套【清晰不加密】,看完教程月入40万没毛病

    第四部 MySQL乱码问题及字符集实战(14节) 01-MySQL数据乱码及多种解决方案实战1.avi 02-MySQL数据乱码及多种解决方案实战2.avi 03-MySQL不乱码5种方法及不乱码根源深入详解.avi 04-下节内容及课后作业说明.avi 05-...

    MySQL数据库查询优化

    第4课 查询优化技术理论与MySQL实践(二)------子查询的优化(二) 从理论看,子查询包括的内容和范围,建立清晰的概念 从实践看,MySQL的子查询优化技术的内容和范围,明确掌握子查询优化手段 预计时间2小时,每...

    邓炜PHP&MYSQL操作函数

    第一节 连接数据 (1)连接服务器 格式: mysql_connect ( [string server [, string username [, string password [, bool new_link [, int client_flags]]]]]) (2)选择数据库 格式: bool mysql_select_db ( ...

    1_实验一 MySQL关系数据库管理系统及SQL语言的使用 (2021春指导书)1

    参考第 4 节实验步骤,完成以下内容,注意边做边截图填写截图报告(截图时需要体现 SQL 语句、执行结果、Output 窗口):1、 创建关系数据库 EMPLO

    struts2.0 第五章 第1,2节

    书中的代码按章存放,如第1章所使用的代码放在codes文件夹的01文件夹下,依此类推。 代码的运行的前提条件: 1.安装j2eesdk-1_4_02_2005Q2-windows-ml.exe,安装完成后,添加CLASSPATH环境变量,该环境变量的值为....

    最新Python3.5零基础+高级+完整项目(28周全)培训视频学习资料

    第4周 上节内容回顾 心灵鸡汤 装饰器详解 装饰器应用详解 装饰器之函数即变量 装饰器之高阶函数 装饰器之嵌套函数 装饰器之案例剖析 装饰器之高潮讲解 迭代器与生成器 迭代器与生成器并行 内置方法详解 Json与...

    Java项目设计与开发范例

    <br> chapter4:第4章是一个客户/服务器程序,运行较复杂,但在4.5.4中有详细的运行说明。 <br> chapter5:第5章的运行环境是IE浏览器、Access数据库、应用服务器Tomcat5.0,其安装和运 行的详细步骤在...

    python入门到高级全栈工程师培训 第3期 附课件代码

    第4章 01 上节课复习 02 创建用户相关的文件 03 用户增删该查及组相关操作 04 对文件的权限管理 05 对目录的权限管理 06 权限管理补充 07 属主属组及基于数字的权限管理 第5章 01 上节课复习 02 文件合并与文件...

    flink入门到精通视频教程

    第四章 Dataset开发 01.入门案例 02.入门案例-构建工程、log4j.properties 03.入门案例-代码运行yarn模式运行 04.DataSource-基于集合 05.DataSource-基于文件 06.Transformation开发 07.Datasink-基于集合 08.Data...

    Ubuntu权威指南(2/2)

    第4章 文件系统基础知识 86 4.1 文件系统的层次结构 87 4.1.1 树形层次结构 87 4.1.2 路径名 88 4.2 文件系统的组织结构 88 4.3 文件的类型 92 4.3.1 普通文件 92 4.3.2 目录文件 94 4.3.3 特殊文件 95 4.3.4 链接...

    Ubuntu权威指南(1/2)

    第4章 文件系统基础知识 86 4.1 文件系统的层次结构 87 4.1.1 树形层次结构 87 4.1.2 路径名 88 4.2 文件系统的组织结构 88 4.3 文件的类型 92 4.3.1 普通文件 92 4.3.2 目录文件 94 4.3.3 特殊文件 95 4.3.4 链接...

    SQL注入攻击与防御(安全技术经典译丛)

    第4章 利用SQL注入  4.1 概述  4.2 理解常见的利用技术  4.3 识别数据库  4.3.1 非盲跟踪  4.3.2 盲跟踪  4.4 使用UINON语句提取数据  4.4.1 匹配列  4.4.2 匹配数据类型  4.5 使用条件语句  ...

    Redis云管理平台CacheCloud.zip

    /etc/init.d/cachecloud-web start(9999是tomcat的端口号,具体要参考第三节中的online.properties和local.properties中的web.port4、添加机器(1). 运行脚本:cachecloud项目中的cachecloud-init.sh脚本是用来初始化...

    hb-curso-parent:Spring课程mvc

    该项目旨在为 Hábil Mx 教授 spring mvc 课程和休息服务进行的活动第一节1.- 安装 STS 最新版本2.- 帐户创建3.- GitHub桌面应用安装4.- MySQL 安装5.- 创建工作区6.- 项目创建7.- 对已创建项目的调整8.- 创建本地 ...

    SQL注入攻击与防御

    第4章 利用SQL注入 105 4.1 概述 106 4.2 理解常见的利用技术 107 4.3 识别数据库 108 4.3.1 非盲跟踪 109 4.3.2 盲跟踪 112 4.4 使用UINON语句提取数据 113 4.4.1 匹配列 114 4.4.2 匹配数据类型 115 4.5 使用条件...

    ASPNET35开发大全第一章

    第4章 ASP.NET的网页代码模型及生命周期 4.1 ASP.NET的网页代码模型 4.1.1 创建ASP.NET网站 4.1.2 单文件页模型 4.1.3 代码隐藏页模型 4.1.4 创建ASP.NET Web Application 4.1.5 ASP.NET网站和ASP.NET应用程序的区别...

Global site tag (gtag.js) - Google Analytics