- 浏览: 801160 次
- 性别:
- 来自: 西安
文章分类
- 全部博客 (307)
- struts (8)
- hibernate (3)
- spring (32)
- opensourceproject (12)
- javaScript (9)
- primeton EOS (2)
- journey of heart (10)
- Design pattern (6)
- ejb (17)
- point (37)
- Linux&Unix (22)
- ibatis (10)
- AJAX (6)
- DB (26)
- Protocol (6)
- chart (4)
- web server (11)
- webservice (7)
- integration (3)
- tuxedo (5)
- ext (4)
- android (1)
- c/c++ (12)
- JVM (1)
- paginationFrame (2)
- code (2)
- report (1)
- High-performance web (1)
- svn (1)
- JQuery (1)
- workDaily (2)
- cloud (16)
- Python (8)
- English (2)
- shell (5)
- googleCode (1)
- nio (1)
- hyper-v (1)
- debug (3)
- vbs (2)
- openstack (3)
- K8S (1)
- Mesos (0)
- Spark (0)
- Marathon (0)
最新评论
-
钱图大展:
chao2751021 写道lib包哪里去下载,找不到
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
钱图大展:
无法下载
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
fm395728572:
shell脚本中用到了环境变量,但是获取不到,例如脚本中有一句 ...
ganymed-ssh2 for Java -
liuhanjiang:
我qq147229234
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
liuhanjiang:
博主 我利用您提供的方法实现博文中介绍的clickstream ...
大型网站用户行为记录的一个实现--基于clickStream(第一部分)
explain显示了mysql如 何使用索引来处理select语 句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。
使用方法,在select语 句前加上explain就 可以了:
如:explain select surname,first_name form a,b where a.id=b.id
分析结果形式如下:
table |
type |
possible_keys |
key |
key_len |
ref |
rows |
Extra |
a |
range |
id first_name |
First_name |
9 |
NULL |
23112 |
Using where Using temporary Using filesort |
b |
ref |
id first_name |
id |
4 |
id |
2 |
Using where |
EXPLAIN列的解释:
table |
显示这一行的数据是关于哪张表的 |
type |
这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和ALL |
possible_keys |
显示可能应用在这张表中的索引。如果为空,没有可能的索引。可以为相关的域从WHERE语句中选择一个合适的语句 |
key |
实际使用的索引。如果为NULL, 则没有使用索引。很少的情况下,MYSQL会选择优化不足的索引。这种情况下,可以在SELECT语句中使用USE INDEX(indexname)来强制使用一个索引或者用IGNORE INDEX(indexname)来强制MYSQL忽 略索引 |
key_len |
使用的索引的长度。在不损失精确性的情况下,长度越短越好 |
ref |
显示索引的哪一列被使用了,如果可能的话,是一个常数 |
rows |
MYSQL认为必须检查的 用来返回请求数据的行数 |
Extra
|
关于MYSQL如何解析查 询的额外信息。将在表4.3中讨论,但这里可以看到的坏的例子是Using temporary和Using filesort, 意思MYSQL根本不能使用索引,结果是检索会很慢 |
extra列返回的描述的意义
Distinct |
一旦MYSQL找到了与行 相联合匹配的行,就不再搜索了 |
Not exists |
MYSQL优化了LEFT JOIN,一旦它找到了匹配LEFT JOIN标 准的行, 就不再搜索了 |
Range checked for each Record(index map:#) |
没有找到理想的索引,因此对于从前面表中来的每一个 行组合,MYSQL检查使 用哪个索引,并用它来从表中返回行。 这是使用索引的最慢的连接之一 |
Using filesort |
看到这个的时候,查询就需要优化了。MYSQL需 要进行额外的步骤 来发现如何对返回的行排序。它根据连接类型以及存储排序键值和 匹配条件的全部行的行指针来排序全部行 |
Using index |
列数据是从仅仅使用了索引中的信息而没有读取实际的行动的表返回的, 这发生在对表的全部的请求列都是同一个索引的部分的时候 |
Using temporary |
看到这个的时候,查询需要优化了。 这里,MYSQL需要创建 一个临时表来存储结果, 这通常发生在对不同的列集进行ORDER BY上,而不是GROUP BY上 |
Where used |
使用了WHERE从句来限 制哪些行将与下一张表匹配或者是返回给用户。 如果不想返回表中的全部行,并且连接类型ALL或index,这就会发生, 或者是查询有问题 |
不同连接类型的解释(按照效率高低的顺序 排序)
system |
表只有一行:system表。 这是const连接类型的特殊情况 |
const |
表中的一个记录的最大值能够匹配这个查询(索引可以是主键或惟一索引)。因为只有 一行,这个值实际就是常数,因为MYSQL先读这个值然后把它当做常数来对待 |
eq_ref |
在连接中,MYSQL在查 询时,从前面的表中,对每一个记录的联合都从表中读取一个记录,它在查询使用了索引为主键或惟一键的全部时使用 |
ref |
这个连接类型只有在查询使用了不是惟一或主键的键或者是这些类型的部分(比如,利 用最左边前缀)时发生。对于之前的表的每一个行联合,全部记录都将从表中读出。这个类型严重依赖于根据索引匹配的记录多少—越少越好 |
range |
这个连接类型使用索引返回一个范围中的行,比如使用>或<查找东西时发生的情况 |
index |
这个连接类型对前面的表中的每一个记录联合进行完全扫描(比ALL更好,因为索引一般小于表数据) |
ALL |
这个连接类型对于前面的每一个记录联合进行完全扫描,这一般比较糟糕,应该尽量避免 |
发表评论
-
使用shell+procedure构造测试数据
2012-01-17 15:27 1209more test.sh #!/usr/bin/bash ... -
porting oracle to mysql
2011-09-02 08:09 1341很久都没写blog了,忙着结婚,忙着和媳妇度过在西安为数不 ... -
ORACLE+UNIX易错问题集锦
2011-02-26 23:31 1561很好的文章! -
Oracle 常用SQL技巧收藏(转载)
2010-11-19 12:53 12601. SELECT子句中避免使用 “*” 当你想 ... -
oracle trigger 的使用
2010-08-29 17:14 16021.目的: 网厅前台订单查询中只查到net ... -
oracle 存储过程学习
2010-05-15 17:13 1776存储过程创建语法: create or replac ... -
记录一次 mysql 无法启动 的问题
2010-05-10 14:10 1719早上看了下我的mysql 服务器,发现无法启动了 ... -
Oracle Sql优化笔记
2010-05-05 10:33 1279基本的Sql编写注意事项 尽量少用IN操作符,基本上所有 ... -
oracle恢复误删除数据,解除锁定的等sql语句
2010-04-27 12:54 21430. (SELECT SID,SERIAL# FROM ... -
Oracle数据库中分区表的操作方法
2010-04-15 08:34 1211在大型的企业应用或企业级的数据库应用中,要处理的数据量通常可以 ... -
谈谈怎么实现Oracle数据库分区表
2010-04-15 08:13 2083谈谈怎么实现Oracle数据库分区表 Oracle ... -
使用 exp, imp命令 导出导入数据
2010-04-09 00:08 1605目标 : 我是吧64上的数据用netbnew用户( ... -
SQL注入攻击例子及Statement和PreparedStatement的比较
2010-03-19 22:56 5639SQL injection is a technique th ... -
Redhad4 下安装mysql5
2010-01-25 21:18 2122一开始是下载的是2进制的包,按照网上的教 ... -
redhat5 下安装 oracle10g
2010-01-23 05:36 2656工作中使用的一直是oracle 数据库 从来 ... -
oracle 小技巧
2009-12-24 21:58 10251.启动和关闭数据库 举例:我们64 测试环境 ... -
mysql 小技巧
2009-12-24 21:45 10921. mysql 看所有表的信息 select * ... -
解决远程连接mysql错误1130代码的方法
2009-12-22 21:27 8861解决远程连接mysql错误 ... -
powerdesigner 基本操作
2009-11-19 22:30 14001.将物理模型 pdm文件 导成数据字典 ... -
oracle 分页例子
2009-10-28 08:44 1444select tp_card_num,serial,resul ...
相关推荐
Mysql Explain 语法详细解析 结合实例,详细解释了如何使用mysql explain进行查询优化。
主要介绍了Mysql Explain 详细介绍的相关资料,这里对Mysql Explain 的语法,属性,以及如何使用,做了全面介绍,需要的朋友可以参考下
语法格式如下 EXPLAIN tbl_name 或者:... 当在一个 SELECT 语句前使用关键字 EXPLAIN 时,MYSQL会解释了即将如何运行该 SELECT 语句,它显示了表如何连接、连接的顺序等信息。 以下信息为引用: 在explain我们所使用的sq
10.MySQL高级索引索引语法.avi 11.MySQL高级索引索引设计原则.avi 12.MySQL高级视图概述.avi 13.MySQL高级视图创建及修改视图.avi 14.MySQL高级视图查看及删除视图.avi 15.MySQL高级存储过程概述.avi 16.MySQL高级...
Explain语法如下:explain [extended] select … 其中extended是选用的,如果使用的extended,那么explain之后就可以使用show warnings查看相应的优化信息,也就是mysql内部实际执行的query。 列名 描述 ...
7.2.1. EXPLAIN语法(获取SELECT相关信息) 7.2.2. 估计查询性能 7.2.3. SELECT查询的速度 7.2.4. MySQL怎样优化WHERE子句 7.2.5. 范围优化 7.2.6. 索引合并优化 7.2.7. MySQL如何优化IS NULL 7.2.8. MySQL如何优化...
7.2.1. EXPLAIN语法(获取SELECT相关信息) 7.2.2. 估计查询性能 7.2.3. SELECT查询的速度 7.2.4. MySQL怎样优化WHERE子句 7.2.5. 范围优化 7.2.6. 索引合并优化 7.2.7. MySQL如何优化IS NULL 7.2.8. MySQL如何优化...
`Explain`语法四. 执行效果4.1. 命令行4.2. 可视化工具–`HeidiSQL Portable 9.4`五. Explain 字段详解5.1. 一览全局字段5.2. Id字段5.2.1. id相同5.2.2. id不相同5.2.3. id相同,又不相同5.3. `select_type`字段...
mysql> explain select 1; +----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+----------------+ | id | select_type | table | partitions | type | ...
7.2.1. EXPLAIN语法(获取SELECT相关信息) 7.2.2. 估计查询性能 7.2.3. SELECT查询的速度 7.2.4. MySQL怎样优化WHERE子句 7.2.5. 范围优化 7.2.6. 索引合并优化 7.2.7. MySQL如何优化IS NULL 7.2.8. MySQL如何优化...
7.2.1. EXPLAIN语法(获取SELECT相关信息) 7.2.2. 估计查询性能 7.2.3. SELECT查询的速度 7.2.4. MySQL怎样优化WHERE子句 7.2.5. 范围优化 7.2.6. 索引合并优化 7.2.7. MySQL如何优化IS NULL 7.2.8. MySQL如何优化...
7.2.1. EXPLAIN语法(获取SELECT相关信息) 7.2.2. 估计查询性能 7.2.3. SELECT查询的速度 7.2.4. MySQL怎样优化WHERE子句 7.2.5. 范围优化 7.2.6. 索引合并优化 7.2.7. MySQL如何优化IS NULL 7.2.8. MySQL如何优化...
7.2.1. EXPLAIN语法(获取SELECT相关信息) 7.2.2. 估计查询性能 7.2.3. SELECT查询的速度 7.2.4. MySQL怎样优化WHERE子句 7.2.5. 范围优化 7.2.6. 索引合并优化 7.2.7. MySQL如何优化IS NULL 7.2.8. MySQL...
7.18 USE (使用)句法 7.19 FLUSH (清除缓存)句法 7.20 KILL (杀灭)句法 7.21 SHOW (显示)句法(得到关于表,列等的信息) 7.22 EXPLAIN (解释)句法(得到关于SELECT的信息) 7.23 DESCRIBE ...
7.2.1. EXPLAIN语法(获取SELECT相关信息) 7.2.2. 估计查询性能 7.2.3. SELECT查询的速度 7.2.4. MySQL怎样优化WHERE子句 7.2.5. 范围优化 7.2.6. 索引合并优化 7.2.7. MySQL如何优化IS NULL 7.2.8. MySQL...
EXPLAIN语法(获取SELECT相关信息) 7.2.2. 估计查询性能 7.2.3. SELECT查询的速度 7.2.4. MySQL怎样优化WHERE子句 7.2.5. 范围优化 7.2.6. 索引合并优化 7.2.7. MySQL如何优化IS NULL 7.2.8....
7.22 EXPLAIN (解释)句法(得到关于SELECT的信息) 7.23 DESCRIBE (描述)句法(得到列的信息) 7.24 LOCK TABLES/UNLOCK TABLES (锁定表/解锁表)句法 7.25 SET OPTION (设置选项)句法 7.26 ...