mysql explain用法
来源:互联网 发布:淘宝网迪士尼保温杯 编辑:程序博客网 时间:2024/04/30 15:01
我们mysql优化可以使用慢查询来发现我们出现问题的语句,这里我们可以使用mysql自带工具explain 来发现该问题语句的具体的情况
使用方法
在mysql 模式下
explain sql语句
eg:explain select * from emp where ename='sfsdgt'\G
详情图片
1,id select识别符。这是select的查询序列号。
2,select_type 可以为一下任何一种类型
simple 简单select(不使用union或子查询)
primary 最外面的select
union union中的第二个或后面的select语句
dependent union union中的第二个或后面的select语句,取决于外面的查询
union result union的结果。
subquery 子查询中的第一个select
dependent subquery 子查询中的第一个select,取决于外面的查询
derived 导出表的select(from子句的子查询)
3,table 输出的行所引用的表。
4,type 联接类型。下面给出各种联接类型,按照从最佳类型到最坏类型进行排序:
system 表仅有一行(=系统表)。这是const联接类型的一个特例。
const 表最多有一个匹配行,它将在查询开始时被读取。因为仅有一行,在这行的列值可被优化器剩余部分认为是常数。const表很快,因为它们只读取一次!
eq_ref 对于每个来自于前面的表的行组合,从该表中读取一行。这可能是最好的联接类型,除了const类型。它用在一个索引的所有部分被联接使用并且索引是unique或primary key
ref 对于每个来自于前面的表的行组合,所有有匹配索引值的行将从这张表中读取。如果联接只使用键的最左边的前缀,或如果键不是unique或primary key(换句话说,如果联接不能基于关键字选择单个行的话),则使用ref。如果使用的键仅仅匹配少量行,该联接类型是不错的。
ref可以用于使用=或<=>操作符的带索引的列。
possible_keys 如果该列是null,则没有相关的索引。在这种情况下,可以通过检查where子句看是否它引用某些列或适合索引的列来提高你的查询性能。如果是这样,创造一个适当的索引并且再次用explain检查查询key 列显示mysql实际决定使用的键(索引)。如果没有选择索引,键是null。要想强制mysql使用或忽视possible_keys列中的索引,在查询中使用force index、use index或者ignore index。
5,rows rows列显示mysql认为它执行查询时必须检查的行数。
知道问题所在我们可以解决
1、添加索引
添加索引也解决不了问题就使用
2、分表
希望可以帮助到大家
- Mysql explain用法详解
- mysql explain的用法
- mysql explain 用法
- MySQL 的 EXPLAIN 用法
- Mysql中EXPLAIN用法
- Mysql explain用法总结
- mysql explain用法
- mysql explain用法
- MySql-Explain用法
- mysql explain用法
- mysql explain用法
- mysql explain用法
- mysql中explain用法
- mysql explain用法
- mysql explain用法
- mysql explain用法
- mysql explain用法
- mysql explain用法
- SQL注入漏洞的防案
- IOS-OC-蓝牙写入数据代理没回调的问题。
- 通配符(WildCard)与正则表达式(Regular Expression)
- Android OkHttp文件上传与下载的进度监听扩展
- Fragment之间传递数据的三种方式
- mysql explain用法
- 禁用Apache的Options和Trace方法
- PHP服务器MYSQL乱码终极解决方案
- json转化bean
- 微信小程序canvas组件简单运用之涂鸦
- VGG Convolutional Neural Networks Practical(4)normalisation
- java 初始化顺序
- CentOS 7.2 服务器配置过程
- ArcGIS中的坐标系统定义与投影转换