- 浏览: 1022904 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (529)
- 服务器 (8)
- jsp (1)
- java (6)
- AIX (1)
- solaris (3)
- linux学习 (53)
- javaScript (2)
- hibernate (1)
- 数据库 (74)
- sql语句 (8)
- oracle 学习 (75)
- oracle 案例 (42)
- oracle 管理 (42)
- Oracle RAC (27)
- oracle data guard (12)
- oracle 参数讲解 (14)
- Oracle 字符集 (8)
- oracle性能调优 (24)
- oracle备份与恢复 (12)
- oracle Tablespace (9)
- oracle性能诊断艺术 (1)
- oracle 11g学习 (5)
- oracle streams (1)
- oracle upgrade and downgrade (4)
- db2学习 (13)
- db2命令学习 (2)
- mysql (28)
- sql server (30)
- sql server 2008 (0)
- 工具 (10)
- 操作系统 (3)
- c++ (1)
- stock (1)
- 生活 (5)
- HADOOP (2)
最新评论
-
massjcy:
...
如何将ubuntu文件夹中文名改为英文 -
skypiea:
谢谢。。。
终于解决了。。。
Oracle 10.2.0.4(5)EM不能启动的解决方案(Patch 8350262) -
qwe_rt:
引用vi /etc/sysconfig/network 请问 ...
Linux操作系统下配置静态IP上网 -
liuqiang:
sudo killall -9 apache2
ps 和 kill 命令详解 -
dazuiba:
引用*绝杀 kill -9 PID 当使用此命令时,一定要通过 ...
ps 和 kill 命令详解
对于经常使用mysql的兄弟们,对explain一定不会陌生。当你在一条SELECT语句前放上关键词EXPLAIN,MySQL解释它将如何处理SELECT,提供有关表如何联合和以什么次序的信息。 EXPLAIN tbl_name 前者可以得出一个表的字段结构等等,后者主要是给出相关的一些索引信息,而今天要讲述的重点是后者。 mysql> explain select * from event; id select_type table type possible_keys key key_len ref rows Extra Using filesort Using index Using temporary ref ALL index SIMPLE
借助于EXPLAIN,你可以知道
1)你什么时候必须为表加入索引以得到一个使用索引找到记录的更快的SELECT。
2)你也能知道优化器是否以一个最佳次序联结表。为了强制优化器对一个SELECT语句使用一个特定联结次序,增加一个STRAIGHT_JOIN子句。
官方的关于explain的文档在http://dev.mysql.com/doc/refman/5.1/en/using-explain.html(英文),本文可作为官方文献的不完整通俗读物。使用的方法
或:
EXPLAIN [EXTENDED] SELECT select_options举例
+----+-------------+-------+------+---------------+------+---------+------+------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+------+------+-------+
| 1 | SIMPLE | event | ALL | NULL | NULL | NULL | NULL | 13 | |
+----+-------------+-------+------+---------------+------+---------+------+------+-------+
1 row in set (0.00 sec)各个属性的含义
select查询的序列号
select查询的类型,主要是区别普通查询和联合查询、子查询之类的复杂查询。
输出的行所引用的表。
联合查询所使用的类型。
type显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是:
system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
一般来说,得保证查询至少达到range级别,最好能达到ref。
指出MySQL能使用哪个索引在该表中找到行。如果是空的,没有相关的索引。这时要提高性能,可通过检验WHERE子句,看是否引用某些字段,或者检查字段不是适合索引。
显示MySQL实际决定使用的键。如果没有索引被选择,键是NULL。
显示MySQL决定使用的键长度。如果键是NULL,长度就是NULL。文档提示特别注意这个值可以得出一个多重主键里mysql实际使用了哪一部分。
显示哪个字段或常数与key一起被使用。
这个数表示mysql要遍历多少数据才能找到,在innodb上是不准确的。
如果是Only index,这意味着信息只用索引树中的信息检索出的,这比扫描整个表要快。
如果是where used,就是使用上了where限制。
如果是impossible where 表示用不着where,一般就是没查出来啥。
如果此信息显示Using filesort或者Using temporary的话会很吃力,WHERE和ORDER BY的索引经常无法兼顾,如果按照WHERE来确定索引,那么在ORDER BY时,就必然会引起Using filesort,这就要看是先过滤再排序划算,还是先排序再过滤划算。常见的一些名词解释
MySQL需要额外的一次传递,以找出如何按排序顺序检索行。
从只使用索引树中的信息而不需要进一步搜索读取实际的行来检索表中的列信息。
为了解决查询,MySQL需要创建一个临时表来容纳结果。
对于每个来自于前面的表的行组合,所有有匹配索引值的行将从这张表中读取
完全没有索引的情况,性能非常地差劲。
与ALL相同,除了只有索引树被扫描。这通常比ALL快,因为索引文件通常比数据文件小。
简单SELECT(不使用UNION或子查询)
发表评论
-
MySQL全连接(Full Join)实现
2012-07-09 18:18 4223MYSQL 可以用 union 实现全连接 mysql> ... -
Mysql Query Cache学习篇
2012-03-19 14:32 970基础介绍篇: QueryCache是用来缓存select语句 ... -
MySQL Query Cache 小结
2012-03-19 14:31 685本文转自:http://isky000.com/databas ... -
max_length_for_sort_data
2012-03-08 11:11 1401这段时间mysql 数据库的性能明显降低,iowait达到了 ... -
BlackHole :黑洞引擎
2012-02-03 14:42 1159BlackHole :黑洞引擎,写入的任何数据都会消失,用于记 ... -
正确重置MySQL密码
2012-02-03 00:51 750谁都不想弄丢家门钥匙,但不管多么小心,时间长了,这样的事情总会 ... -
MYSQL--my.cnf配置中文详解
2012-02-02 22:55 931mysqld程序--目录和文件 ... -
基于MySQL的高可用可扩展架构探讨(转)
2011-03-24 23:38 811随着信息量飞涨,信息的存储成为了这个时代至关重要的一项技术。如 ... -
MySQL性能优化的参数简介
2011-03-24 23:18 699公司网站访问量越来越 ... -
mysql replication原理介绍
2011-03-24 23:04 1040要想用好一个系统,理解其实现原理是非常重要的事情,只有理解了其 ... -
如何为用户设置密码
2011-03-24 22:27 758当初次在机器上安装完Mysql时,你可以匿名进行访问数据库或者 ... -
MySQL数据的导出和导入工具:mysql
2011-03-24 22:24 754导出要用到MySQL的mysqldum ... -
How to Backup a MyISAM / InnoDB MySQL Database
2011-03-24 22:19 941Whichever MySQL storage engine ... -
加大mysql的最大连接数
2011-03-24 22:10 827mysql的最大连接数默认是100, 这个数值对于并发连接很多 ... -
MySQL服务器安装完之后如何调节性能
2011-03-24 22:04 698My favorite question during Int ... -
MySQL 性能优化的简单办法
2011-03-24 21:50 1482优化数据库最核心的实际上就是配置参数的调整。本文通过一个简单的 ... -
Mysql 占用cpu资源高
2011-03-24 21:44 1161朋友主机(Windows 2003 + IIS ... -
MySQL慢查询分析mysqldumpslow
2011-03-24 21:40 1050MySQL优化的第一步应该做的就是排查问题,找出瓶颈,而通常情 ... -
打开MySQL的慢查询记录
2011-03-24 21:38 923打开MySQL慢查询MySQL慢查询记录日志对于跟踪PHP+M ... -
MySQL Back to Basics:Analyze,Check,Optimize, and Repair
2011-03-24 01:33 879It felt like the right time for ...
相关推荐
### MySQL Explain 深度解析 #### 一、Explain 的意义 在数据库查询优化领域,`EXPLAIN` 是一个非常强大的工具,它能够帮助我们分析 `SELECT` 语句的执行过程,揭示出查询效率低下的原因。通过 `EXPLAIN` 的分析...
mysql explain
MySQL的EXPLAIN命令是数据库管理员和开发者用来分析SQL查询执行计划的重要工具。它能帮助我们理解MySQL如何处理查询,从而优化查询性能。以下是对EXPLAIN命令及其相关知识点的详细解释。 1. **EXPLAIN调用方式**: ...
### MySQL EXPLAIN 详解 #### 一、EXPLAIN 概述 MySQL 的 `EXPLAIN` 命令是一个非常强大的工具,它可以帮助我们理解 MySQL 如何执行查询,并为我们提供优化查询性能的重要信息。通过 `EXPLAIN`,我们可以了解查询...
### MySQL EXPLAIN 笔记整理 #### 一、EXPLAIN 命令简介 `EXPLAIN` 是 MySQL 提供的一个非常有用的工具,用于展示查询执行计划。通过它,我们可以了解到 SQL 查询是如何被执行的,这对于优化 SQL 语句、提高查询...
mysql执行计划解读,刚要: 1、mysql执行计划调用方式; 2、执行计划包含的信息; 3、执行计划显示内容解读; 4、mysql执行计划的局限;
### MySQL Explain 语法详细解析 #### 一、Explain 的重要性和作用 在数据库管理和维护过程中,查询性能的优化是一项非常关键的任务。特别是在处理大量数据和复杂查询的情况下,查询优化可以显著提高系统的响应...
标题:Mysql Explain 详解 描述:深入解析MySQL的Explain功能,理解其在查询优化中的关键作用。 知识点详述: ### 一、Explain 的基本概念与使用 #### 1.1 概述 `Explain`是MySQL提供的一种用于分析SQL执行计划...
MySQL explain-MySQL执行计划解读.ppt
MySQL explain详解
### MySQL EXPLAIN解析 #### 一、MySQL EXPLAIN概述 MySQL EXPLAIN命令是数据库管理员和开发者在优化查询性能时非常重要的工具之一。它能够帮助我们理解MySQL如何执行SQL语句,包括选择哪些索引以及如何连接不同的...
### MySQL EXPLAIN详解 #### 一、EXPLAIN简介 **EXPLAIN** 是 MySQL 提供的一个非常有用的工具,它能够帮助用户了解 MySQL 如何执行查询语句,并展示出 MySQL 预估的查询计划。这对于理解 SQL 查询的工作原理、...
《MySQL Explain深度解析》 MySQL数据库在SQL查询优化过程中,`EXPLAIN`是一个至关重要的工具。它可以帮助我们理解查询执行的细节,识别潜在的性能瓶颈,从而进行有效的优化。本讲义将深入探讨`EXPLAIN`的使用方法...
MySQL中的`EXPLAIN`命令是用于分析SQL查询执行计划的重要工具,它可以帮助数据库管理员和开发者了解MySQL如何处理SQL语句,从而进行性能优化。在深入理解`EXPLAIN`之前,我们先来了解一下数据库优化的基本概念。 ...
MySQL的EXPLAIN命令是数据库管理员和开发者用于优化SQL查询性能的重要工具。它提供了一种查看MySQL如何执行SELECT语句的方法,帮助我们理解查询计划、索引使用情况以及潜在的性能瓶颈。下面是对MySQL EXPLAIN的详细...
MySQL的EXPLAIN命令是数据库管理员和开发者用来分析SQL查询执行计划的重要工具,它能帮助我们理解MySQL如何使用索引来处理SELECT语句,并优化查询性能。本文将深入解析EXPLAIN输出的各项参数,以便更好地理解和优化...
Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好的优化语句。