1.id:操作表的顺序
根据id的值出现的情况不同,操作表的顺序或者执行select字句的顺序也会有所不同
id值出现的情况 | 执行的顺序 |
---|---|
id值相同的时候 | 由上之下执行 |
id值不同的时候 | id值越大越是先执行 |
id值有相同也有不同的时候 | id值越大的先执行,id值相同的由上之下执行 |
2.select_type:查询的类型
出现的选项可能有
次序 | select_type的值 | 说明 |
---|---|---|
1 | SIMPLE | 简单查询(不包括子查询或者UNION) |
2 | PRIMARY | 主查询(查询中包含了复杂查询,在外层的查询就会标记为主查询) |
3 | SUBQUERY | 子查询(select或者where列表中包含了子查询) |
4 | DERIVE | 有临时表产生 |
5 | UNION | 如果第二个select出现在union之后,则标记为UNIION;如果union包含在from子句的子查询当中,最外层标记为DERIVE |
6 | UNION RESULT | 从UNION表中获取的结果的SELECT子句 |
3.table:显示当前的一行数据是关于哪一个表的
4.partitions
5.type:扫描表的类型
性能效果排序如下,ALL表示这全表扫描
system>const>eq_ref_ref>range>index>ALL
次序 | type的值 | 说明 |
---|---|---|
1 | system | 当表只有一行记录时,这是const的特例(没有实际意义) |
2 | const | 表示通过索引一次就找到了(单表单行,也没有实际意义) |
3 | eq_ref | 唯一性全表扫描,对于每个索引键,表中都是一条记录与之匹配。常见于主键或者唯一索引扫描 |
4 | ref | 非唯一性索引扫描,他可能会找到多个符合条件的行 |
5 | range | 只检索给定范围的行,使用一个索引来选择行。 |
6 | index | 遍历索引树 |
7 | ALL | 遍历全表 |
6.possible_keys:显示可能会被应用的索引
7.key:实际上使用到的索引
- 如果没有则为null
- 如果使用了覆盖索引,则显示覆盖索引
7.key_len:索引使用的字节数
8.ref:索引的引用
9.rows:需要读取的行数
根据表的统计信息和索引的使用来大致估算出找到记录所需要读取的行数。
10.filtered
11.Extra:额外信息
次序 | type的值 | 说明 |
---|---|---|
1 | Using filesort | 文件内排序(Mysql会对数据使用一个外部的索引进行了排序,而不是按照表内的索引顺序进行读取) |
2 | Using temporay | 产生了临时表(使用了临时表保存临时的数据,常见于order by 和 group by |
3 | Using index | 使用了覆盖索引 |
4 | Using where | 使用了where进行了过滤 |
5 | using join buffer | 使用了连接缓存 |
6 | impossible where | where子句的值总是false,不能用来获取任何的元组 |
7 | 。。 | 。。。 |