mysql explain的用法
mysql explain的用法
mysql explain的用法MySQL的EXPLAIN命令显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。
一、通过expalin可以得到
2、在语句结尾(;之前)加上\G能够更清晰的查看.
1)、all
全表扫描,效果是最不理想的。
2)、const
const是在where条件以常量作为查询条件,最多只会有一条记录匹配,由于是常量,实际上只须要读一次。
3)、eq_ref
最多只会有一条匹配结果,一般是通过主键或唯一键索引来访问。一般会出现在连接查询的语句中。
4)、fulltext
进行全文索引检索。
5)、index
全索引扫描。MySQL在扫描表时按索引次序进行而不是行。
6)、index_merge
查询中同时使用两个(或更多)索引,然后对索引结果进行合并(merge),再读取表数据。
7)、index_subquery
子查询中的返回结果字段组合是一个索引(或索引组合),但不是一个主键或唯一索引。
8)、rang
索引范围扫描。一个有限制的索引扫描,它开始于索引里的某一点,返回匹配这个值域的行(显而易见的范围扫描.即带有BETWEEN或在WHERE子句中带有>的查询,当MySQL使用索引去查找一系列值的时候,如IN()和OR列表,也为显示的范围扫描)
9)、ref
也叫索引查找,他返回所有匹配某单个值的行,它可能会找到多个符合条件行。
10)、ref_or_null
与ref的唯一区别就是在使用索引引用的查询之外再增加一个空值的查询。
11)、system
系统表,表中只有一行数据;
12)、unique_subquery
子查询中的返回结果字段组合是主键或唯一约束。
5、possible_keys
这一列显示了查询可以使用哪些索引,是基于查询访问的列和使用的比较操作符来判断的.如果没有任何索引可以使用,就会显示成null
6、key
显示了MySQL决定采用哪个索引来优化对该表的访问
7、key_len
1)、key_len列显示mysql决定使用的键长度,如果键是null,则长度为null。
2)、显示MySQL在索引里使用的字节数.举个例子就是在查询中使用到了主键,而主键的数据类型为INT,则为4,SMALLINT则为2
3)、使用的索引长度,一般越短越好。
8、Ref
显示了之前的表在key列记录的索引中查询值所用到的列或常量。
9、rows
显示的是MySQL为了找到所需的值而要读取的行数.
10、extra
在此显示的是在其他列不适合显示的额外信息,主要可能会是以下内容:
1)、Distinct
查找distinct 值,当mysql找到了第一条匹配的结果时,将停止该值的查询,转为后面其他值查询。
2)、Full scan on NULL key
子查询中的一种优化方式,主要在遇到无法通过索引访问null值的使用。
3)、Using index
MySQL将使用覆盖索引,以避免访问表(就是仅仅使用了索引中信息而没有读取表中)
4)、Using where
意味着MySQL服务器将在存储引擎检索行后在进行过滤(将会通过WHERE条件来筛选存储引擎返回的记录)
5)、Using temporary
意味着MySQL在对查询结果排序时会用到一个临时表.
6)、Using filesort
看到这个的时候,查询就需要优化了。意味着MySQL会对结果使用一个外部索引排序,而不是按索引次序从表里读出来.
- mysql双向同步原理(详解MySQL的半同步)
- mysql关联查询详解(详解mysql 组合查询)
- mysqlgroupby用法(MySQL Group by的优化详解)
- phpstudymysql数据库启动不了(phpstudy mysql启动不了的解决方法)
- mysql什么是慢查询(MySQL慢查询的坑)
- 通过接口访问mysql数据库(使用mysql记录从url返回的http GET请求数据操作)
- mysql全表查询如何优化(MySQL 分组查询的优化方法)
- mysql查询逗号分割字符串(MySQL 字符串拆分实例无分隔符的字符串截取)
- navicat不能连接到mysql报错2013(Navicat连接SQL Server数据:报错08001-命名管道提供程序的完美解决方法)
- mysql是否支持透明数据加密(MySQL的加密解密的几种方式小结)
- 阿里云的自带mysql怎么开启(阿里云云服务器mysql密码找回的方法)
- mysql改root密码命令(MySQL root密码的重置方法)
- mysql的默认数据库例子在哪里(修改MySQL8.0 默认的数据目录快捷操作无配置)
- 宝塔数据库不小心删了(宝塔面板MySQL数据库经常自动停止的解决方法)
- mysql5.7.36详细安装(CenOS6.7下mysql 8.0.22 安装配置方法图文教程)
- navicat创建MySql定时任务的方法详解(navicat创建MySql定时任务的方法详解)
- 赏读 八月再见,九月你好(赏读八月再见九月你好)
- 散文 八月再见,九月,我在风中等你(散文八月再见九月)
- 8月再见 9月你好(8月再见)
- 魔兽世界 设计师爆料,原始版本并无PVP,跨阵营属于返璞归真(魔兽世界设计师爆料)
- 吐槽完《弧光大作战》之后,我们和设计师聊了聊魔兽首款手游的立项初衷和未来(吐槽完弧光大作战之后)
- 魔兽争霸3自定义战役少年杰雷 2(魔兽争霸3自定义战役少年杰雷)
热门推荐
- python正则表达式处理教学(使用Python正则表达式操作文本数据的方法)
- html5 布局设计(Html5导航栏吸顶方案原理与对比实现)
- sql怎么对一列数据分组另一行求和(分组后分组合计以及总计SQL语句稍微整理了一下)
- dedecms内容页代码(DEDECMS生成HTML时提示 DedeTag Engine Create File False的解决方法)
- sqlserver提供的内置函数(Sqlserver 自定义函数 Function使用介绍)
- 宝塔如何通过ip访问网站(宝塔面板如何禁止“服务器IP地址”打开网站?)
- linuxsamba怎么连接(Linux Samba服务器超详细安装配置附问题解决)
- django开发平台运用的技术(django的ORM模型的实现原理)
- html5 canvas 特效(JavaScript canvas实现流星特效)
- 内网nginx配置https详解(Nginx如何配置Http、Https、WS、WSS的方法步骤)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9