mysql explain字段意思解释
mysql explain字段意思解释
explain包含id、select_type、table、type、possible_keys、key、key_len、ref、rows、extra字段
id
id列的编号是select的序列号,有几个select就有几个id,并且id的顺序是按select出现的顺序增长的。
select_type
select_type表示对应行是简单还是复杂的查询。 1. simple:简单查询
2. primary:复杂查询中最外层的select
3. subquery:包含在select中的子查询(不在from子句中)
4. derived:包含在from子句中的子查询
5. union:在union中的第二个和随后的select
6. union result:从union临时表检索结果的select
table
这一列表示explain的一行正在访问哪张表。
type
这一列表示关联类型或访问类型,即mysql决定如何查找表中的行
性能优先级依次从最优到最差分别为:system>const>eq_ref>ref>fulltext>ref_or_null>index_merge>unique_subquery>index_subquery>range>index>all
1.null:mysql能够在优化阶段分解查询语句,在执行阶段用不着再访问表或索引。
2.const、system:mysql能对查询的某部分进行优化并将其转化成一个常量(可以看show warnings的结果)。
3.eq_ref:primary key 或unique key索引的所有部分被连接使用,最多只会返回一条符合条件的记录。
4.ref:相比eq_ref,不实用唯一索引,而是使用普通索引或者唯一性索引的部分前缀,索引要喝某个值相比较,可能会找到符合条件的行。
5.ref_or_null:类似ref,但是可以搜索值为null的行。
6.index_merge:表示使用了索引合并的优化方法。
7.range:范围扫描通常出现在in(),between,>,<,>=等操作中。
8.index:和all一样,不同就是mysql只需扫描索引树,这通常比all快一些。
9.all:全表扫描,意味着mysql需要从头到尾去查找所需要的行,通常情况下这需要增加索引来进行优化了。
possible_keys
这一列显示查询可能使用哪些索引来查找
key
这一列显示mysql实际采用哪个索引来优化对该表的访问
key_len
这一列显示了mysql在索引里使用的字节数,通过这个值可以算出具体使用了索引中的那些列
ref
在key列记录的索引中,表查找值所用到的列或常量,常见的有:const,func,null,字段名
rows
mysql估计要读取并检测的行数,注意这个不是结果集里的行数。
extra
展示的是额外信息
1.distinct:一但mysql找到了与行相联合和匹配的行,就不再搜索了。
2.using index:这发生在对表的请求列都是同一索引的部分的时候,返回的列数据只使用了索引中的信息,而没有再去访问表中的行记录。(是性能高的表现)
3.using where:mysql服务器将在存储引擎检索行后再进行过滤。就是先读取整行数据,再按where条件进行检查,符合就留下,不符合就丢弃。
4.using temporary:mysql需要创建一张临时表来处理查询。出现这种情况一般是要进行优化的,首先是想到用索引来优化。
5.using filesort:mysql会对结果使用一个外部索引排序,而不是按索引次序从表里读取行。此时mysql会根据联接类型浏览所有符合条件的记录,并保存排序关键字和行指针,然后排序关键字并按顺序检索行信息。这种情况下一般也是要考虑使用索引来优化的。
mysql explain字段意思解释的更多相关文章
- Mysql EXPLAIN列的解释
转自:http://blog.chinaunix.net/uid-540802-id-3419311.html explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择 ...
- mysql explain 的type解释
原文:http://blog.csdn.net/github_26672553/article/details/52058782 Explain命令 用于分析sql语句的执行情况和成本预估 今天我们重 ...
- mysql explain的解释
详解MySQL中EXPLAIN解释命令 explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. 使用方法,在select语句前加上e ...
- mysql explain详解
对于经常使用mysql的兄弟们,对explain一定不会陌生.当你在一条SELECT语句前放上关键词EXPLAIN,MySQL解释它将如何处理SELECT,提供有关表如何联合和以什么次序的信息.借助于 ...
- mysql explain用法和结果的含义
重点是第二种用法,需要深入的了解. 先看一个例子: mysql> explain select * from t_order; +----+-------------+---------+--- ...
- [转]MySQL Explain详解
在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有 ...
- mysql explain用法和结果的含义(转)
重点是第二种用法,需要深入的了解. 先看一个例子: mysql> explain select * from t_order; +----+-------------+---------+--- ...
- [mysql] mysql explain 使用
explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. 先解析一条sql语句,看出现什么内容 EXPLAINSELECTs.uid, ...
- MySQL Explain 结果解读与实践
Explain 结果解读与实践 基于 MySQL 5.0.67 ,存储引擎 MyISAM . 注:单独一行的"%%"及"`"表示分隔内容,就象分开&qu ...
随机推荐
- python_102_属性方法
# 属性方法:把一个方法变成一个静态属性 #1 class Dog(object): def __init__(self,name): self.name=name @property#属性 def ...
- C++内联函数、宏定义和普通函数的区别
C++内联函数.宏定义和普通函数的区别? 宏定义:在预处理阶段进行简单的文本替换,不会进行参数类型检查: 内联函数:在编译器的时候进行代码插入,编译器会在每次调用内联函数的地方直接将内联函数的内容展开 ...
- label自适应文本大小
UILabel *label = [[UILabelalloc] initWithFrame:CGRectZero]; NSString *string = @"aa2fkoksdajfis ...
- C#MySQL增删改查
首先在项目中添加引用 using MySql.Data.MySqlClient; 连接字符串 private string connString="server=localhost;use ...
- 主题模型LDA及在推荐系统中的应用
1 关于主题模型 使用LDA做推荐已经有一段时间了,LDA的推导过程反复看过很多遍,今天有点理顺的感觉,就先写一版. 隐含狄利克雷分布简称LDA(latent dirichlet allocation ...
- Bzoj 近期题目一句话题解
目录 Bzoj 近期题目题解 1000: A+B Problem (模拟) 1008: [HNOI2008]越狱 (容斥) 1012: [JSOI2008]最大数maxnumber (线段树) 103 ...
- 【概率dp 高斯消元】bzoj3270: 博物馆
一类成环概率dp的操作模式 Description 有一天Petya和他的朋友Vasya在进行他们众多旅行中的一次旅行,他们决定去参观一座城堡博物馆.这座博物馆有着特别的样式.它包含由m条走廊连接的n ...
- thinkcmf5更新模板代码分析,解决模板配置json出错导致数据库保存的配置项内容丢失问题
private function updateThemeFiles($theme, $suffix = 'html') { $dir = 'themes/' . $theme; $themeDir = ...
- OpenCV中图像的读取,显示与保存
图像的读取,显示与保存 相关函数:cv2.imread().cv2.imshow().cv2.imwrite() 1.读入图像: 用cv2.imread()函数来读取图像,cv2.imread(路 ...
- socket中send和recv函数
Socket一次Recv接受的字节有限制么? 从套接字接收数据. 返回值是表示接收数据的字符串. 一次接收的最大数据量由bufsize指定.它默认为零. 注意为了最好地匹配硬件和网络现实,bufsiz ...