关于建设网站的申请,重庆首页工程设计咨询有限责任公司,手机网站建设教材,网站的竞价怎么做MySQL执行计划(explain)
1.什么是执行计划
2.如何分析执行计划 执行计划一共有12列,每一列都有着特殊的含义#xff0c;接下来我们逐一分析
id
select语句的查询顺序,包含一组数字#xff0c;如果数字相同则从上到下#xff0c;如果数字不同则从大到小。
select_type
…MySQL执行计划(explain)
1.什么是执行计划
2.如何分析执行计划 执行计划一共有12列,每一列都有着特殊的含义接下来我们逐一分析
id
select语句的查询顺序,包含一组数字如果数字相同则从上到下如果数字不同则从大到小。
select_type
查询的类型可以为以下任意一种
SIMPLE 简单SELECT语句,查询中不包含子查询或者unionPRIMARY 查询中包含任何复杂的子部分,最外层被标记为primaryUNION 若第二个select出现在union之后则被标记为union若union包含在from子句的子查询中外层select将被标记为derivedUNION RESULT UNION 的结果SUBQUERY 在select 或 where列表中包含了子查询DERIVED 在from列表中包含的子查询被标记为derived衍生mysql或递归执行这些子查询把结果放在临时表里
table
查询所用的表
partitions
如果查询是基于分区表的则显示查询访问的分区
type
访问类型
system const eq_ref ref fulltext ref_or_null index_merge unique_subquery index_subquery range index ALL
system 表仅有一行(系统表)const 表最多有一个匹配行,它将在查询开始时被读取。因为仅有一行,在这行的列值可被优化器剩余部分认为是常数。const表很快,因为它们只读取一次eq_ref 唯一性索引扫描对于每个索引键表中只有一条记录与之匹配。常见于主键 或 唯一索引扫描。ref 非唯一性索引扫描返回匹配某个单独值的所有行range 只检索给定范围的行使用一个索引来选择行。一般就是在where语句中出现了bettween、、、in等的查询。这种索引列上的范围扫描比全索引扫描要好index 该联接类型与ALL相同,除了只有索引树被扫描。这通常比ALL快,因为索引文件通常比数据文件小。ALL 遍历全表以找到匹配的行。
possible_keys
查询涉及到的字段上存在索引则该索引将被列出但不一定被查询实际使用
key
显示MySQL实际决定使用的键(索引)。如果没有选择索引,键是NULL。
key_len
表示索引中使用的字节数查询中使用的索引的长度最大可能长度并非实际使用长度理论上长度越短越好。key_len是根据表定义计算而得的不是通过表内检索出的
ref
显示使用哪个列或常数与key一起从表中选择行。
rows
显示MySQL认为它执行查询时必须检查的行数。
filtered
显示了通过条件过滤出的行数的百分比估计值。
Extra
Distinct MySQL发现第1个匹配行后,停止为当前的行组合搜索更多的行。Using filesort mysql对数据使用一个外部的索引排序而不是按照表内的索引进行排序读取。也就是说mysql无法利用索引完成的排序操作成为“文件排序”Using temporary使用临时表保存中间结果也就是说mysql在对查询结果排序时使用了临时表常见于order by 和 group byUsing index 从只使用索引树中的信息而不需要进一步搜索读取实际的行来检索表中的列信息。Using where WHERE 子句用于限制哪一个行匹配下一个表或发送到客户Using join buffer使用了链接缓存Select tables optimized away: MySQL根本没有遍历表或索引就返回数据了表示已经优化到不能再优化了Impossible WHEREwhere子句的值总是false不能用来获取任何元祖