MYSQL中的EXPLAN是用来解析sql语句的
explain是用来分析sql语句,帮助优化的一个命令。
explain的语法如下:
explain [extended] select … from … where …
如果使用了extended,那么在执行完explain语句后,可以使用show warnings语句查询相应的优化信息。
比如我们执行 select uid from user where uname=’scofield’ order by uid 执行结果会有
+—-+————-+——-+——-+——————-+———+———+——-+——+——-+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+—-+————-+——-+——-+——————-+———+———+——-+——+——-+
这些东西。
其中 table 表示是哪个表的数据。
type比较重要。表示链接的类型。链接类型由好到坏的,依次是 system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
一般情况,至少要达到 range 级别,最好是 ref 级别。否则可能会有性能问题。
possible_keys 是指可以应用到该表的索引,如果为NULL则没有。
key 是指用到的索引。
key_len 是索引的长度,在不影响查询精度的情况下,值越小越好。
ref 是指索引的那一列被使用了。一般会是个常数。
rows 是指有多少行。
extra 是指额外的信息。也是比较重要的。如果值为 distinct ,说明mysql 找到了域行联合匹配的行,就不再查找了。
如果值为 not exits : mysql优化了 left join ,一旦找到了 left join 匹配的行,便不再进行搜索了。
如果值为 rang checked for each : 没有找到理想的索引。
如果为 using filesort ,则需要改进sql了。这说明 mysql执行 需要 文件排序。这是比较影响效率的。
如果为 using temporary , 这是使用了 临时表。 这种情况也比较影响效率,sql需要改进。或者从应用层进行改进。
如果为 where used 说明使用了where语句。如果 type为 all 或者 index ,一般会出现这样的结果。这样的问题,一般是查询需要改进。
在一般稍大的系统中,基本尽可能的减少 join ,子查询 等等。mysql就使用最简单的查询,这样效率最高。至于 join 等,可以放在应用层去解决。
MYSQL中的EXPLAN是用来解析sql语句的相关推荐
- 在mysql中更新数据sql语句怎么写_在MySQL中,更新数据库表记录的SQL语句,包括______语句...
在MySQL中,更新数据库表记录的SQL语句,包括______语句 答:insert replace update delete 在域F中,设其特征为2,对于任意a,b∈F,则(a+b)2 等于多少 ...
- MySQL中非常好用的函数或sql语句(14种)
1.group_concat 在我们平常的工作中,使用group by进行分组的场景,是非常多的. 比如想统计出用户表中,名称不同的用户的具体名称有哪些? 具体sql如下: select name f ...
- mysql中日期怎样求差_在Sql语句中怎样计算出两个日期的差值
展开全部 sql语句中计算两个日期的差值用32313133353236313431303231363533e4b893e5b19e31333365643662datediff函数. 工具:sqlser ...
- Java中如何解析SQL语句、格式化SQL语句、生成SQL语句?
昨天在群里看到有小伙伴问,Java里如何解析SQL语句然后格式化SQL,是否有现成类库可以使用? 之前TJ没有做过这类需求,所以去研究了一下,并找到了一个不过的解决方案,今天推荐给大家,如果您正要做类 ...
- mysql按某个条件升序_问题描述大家都知道, MySQL 中按某字段升序排列的 SQL 为 (以 id 为例,下同):SELECT * FROM `MyTable` WHERE...
问题描述 大家都知道, MySQL 中按某字段升序排列的 SQL 为 (以 id 为例,下同): SELECT * FROM `MyTable` WHERE `id` IN (1, 7, 3, 5) ...
- mysql中常用的三种插入数据的语句
mysql中常用的三种插入数据的语句: insert into表示插入数据,数据库会检查主键(PrimaryKey),如果出现重复会报错: replace into表示插入替换数据,需求表中有Prim ...
- MySQL的基础架构以及一条查询sql语句的执行流程
详细介绍了Mysql的基础架构以及一条查询sql的执行流程. 如果不想作为一个只能简单的写写sql工程师,而是想要深入的学习MySQL,那么我们有必要首先从宏观的角度来了解MySQL的整体架构,只有把 ...
- Java使用Druid解析SQL语句
依赖 名称:com.alibaba.druid 版本:1.1.16 SQL语句解析 以SQLServer为例,解析插入语句和更新语句,并提取对应的数据 /*** @Author li.dongquan ...
- php sql取数据生成数组中,php中实现数组生成要执行的sql语句
本篇文章主要介绍php中实现数组生成要执行的sql语句,感兴趣的朋友参考下,希望对大家有所帮助. 会不会碰到这样一种情况呢?每次获取数据将数据和历史版本都有一定的差别,然而用ThinkPHP的addA ...
最新文章
- 概率密度与概率的关系
- html页面关闭前提示信息,【转】表单提交及关闭当前页面并刷新数据
- C1之路 | 训练任务01-进制与信息编码
- Shiro集成Web时的url匹配规则
- Spring Bean的属性注入
- kafka概念使用简介注意点
- nodejs代码细节效率对比
- networkx 标签_networkx绘制BA无标度网络
- check corners_免费下载:将Mac样式的Hot Corners添加到Windows 10
- python与办公自动化专业就业方向_Python最好的几大就业方向与岗位技能要求【行业风向】...
- @requestbody和@requestparam作用
- Stanley-系列三
- Python精通-Python字符串格式化操作
- 计算机专业在沈阳有什么发展,985 计算机专业在全国 TOP10 在沈阳
- 懒人修仙传ce修改方法_专访|《凡人修仙传》原著作者忘语:“韩老魔”原型是我...
- Vue.js05:vue内联样式
- 测试用例(测试大纲法)
- iterm2新技能-用不同的颜色创建新标签
- python 交互redis 的ZADD方法异常: AttributeError: ‘int‘ object has no attribute ‘items‘
- WinEdt的bib参考文献管理教程
热门文章
- android opengl旋转,Android openGl学习笔记二,gl的旋转、位移、放大缩小
- Python:7-4 找出从现在开始满足条件的1个最近的日期 (15分)
- python数据存储和查询代码_【Python分享】如何便捷地存储、查询数据
- codevs 搜索题汇总(黄金级)
- Evil.js源码解读
- Audition 入门系列(合集)
- 斗鱼、饿了么大数据平台架构
- 东财VS同花顺!互联网金融争霸史
- HTML5移动Web开发实战 PDF扫描版​
- 《java从入门到放弃》_JAVA从入门到放弃(四)