本教程中所使用的数据库的建表语句都在“MySQL高阶教程索引”这篇文章中,点击链接直达:索引&建表语句
摘要:本文主要介绍Explain的最后一个常见字段——Extra
Explain字段解释——Extra
1、Using filesort
filesort产生原因:排序时没有用到索引列:
2、Using temporary
看例子:
这是因为,group by中只用到了联合索引中的后缀索引列。什么是前缀索引列,什么是后缀索引列呢?create index idx_col1_col2 on t1(col1, col2); 第一个col1就是前缀索引列,后边的col2是后缀索引列。
有啥区别呢?前缀索引列很吊,后缀索引列垃圾:
如果order by 和 group by都用前缀索引,那就皆大欢喜!
如果他们之中出现了一个后缀索引,就gg,除非把他们都用上:
当group by 与 order by连用时,group by里边必须两个都出现,否则gg,而order by可以只出现前缀索引。
当group by单独用时,可以只出现前缀索引。
gg:filesort、temporary都出现,不gg,都不出现。
3、Using index
4、Using where
查询的列未被索引覆盖,where筛选条件非索引的前导列。
5、Using join buffer
使用了连接缓存,join语句用到了缓冲区。
6、impossible where
where字句的值总是false,不能用来获取任何元组。比如: