partitions
和分区表有关,一般情况下我们的查询语句的执行计划的partitions列的值都是NULL
type
执行计划的一条记录就代表着MySQL对某个表的执行查询时的访问方法/访问类型,其中的type列就表明了这个访问方法/访问类型是个什么东西,是较为重要的一个指标,结果值从最好到最坏依次是
system > const > eg ref > ref > fulltexti > ref or null > index merge >unique subquery > index subquery > range > index > ALL出现比较多的是system>const>eg ref>ref>range>index>ALL,一般来说,得保证查询至少达到range级别,最好能达到ref。
explain select * from dept_copy1 where loc = "100000";
当loc有二级索引的时候,type类型通常都是ref级别
system通常是系统表的级别
range指的一般是范围查询
possible keys与key
possible keys列表示在某个查询语句中,对某个表执行单表查询时可能用到的索引有哪些,key列表示实际用到的索引有哪些,如果为NULL,则没有使用索引
key_len
key_len列表示当优化器决定使用某个索引执行查询时,该索引记录的最大长度(作用是当你用到的是联合索引的时候,key只显示使用的索引名字,不显示你使用到的是哪个具体的字段,这时候就可以根据这个长度去分析了)
ref
当使用索引列等值匹配的条件去执行查询时,也就是在访问方法是const、eq_ref、ref、ref_or_null、unique sutbquery、index subquery其中之一时,ref列展示的就是与索引列作等值匹配的是谁
rows
查询优化器预测这条sql查询时扫描的行数,并不代表完全准确,预测而已(仅供参考)
filtered
explain select * from dept_copy1 where id >5890 and loc ="9";
就是比如在这条sql中rows扫描的行数是5000条,那么filtered中的数值是预估扫描行数中可能有百分之?满足剩余的搜索条件(这里是loc=“9”)但是并不代表一定是百分之?的数据,只是预测