执行计划是什么:使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。
作用:分析你的查询语句或是表结构的性能瓶颈
语法:Explain + SQL语句
执行计划输出内容介绍:表的读取顺序、数据读取操作的操作类型、哪些索引可以使用、哪些索引被实际使用、表之间的引用、每张表有多少行被优化器查询。
执行计划包含的信息:
possible_keys:可能使用的key索引。
Key:实际使用的索引。如果为NULL,则表示没有使用索引。
查询中若使用了覆盖索引,则该索引和查询的select字段重叠。
字符类型
字符类型-索引字段为char类型+不可为Null时:
索引字段为varchar类型+不可为Null时:
varchar(n)变长字段+不允许Null=n*(utf8=3,gbk=2,latin1=1)+2
索引字段为varchar类型+允许为Null时:
varchar(n)变长字段+允许Null=n*(utf8=3,gbk=2,latin1=1)+1(NULL)+2
数值类型
日期和时间:
Ref:显示索引的哪一列被使用了,如果可能的话,是一个常量。哪些列或常量被用于查找索引列上的值。
由key_len可知t1表的idx_col1_col2被充分使用,col1匹配t2表的col1,col2匹配了一个常量,即 'ac'。
根据表统计信息及索引选用情况,大致估算出找到所需的记录所需要读取的行数。
Extra:包含不适合在其他列中显示但十分重要的额外信息