mysql expalin字段详解

前言

table : 

CREATE TABLE `xx_user` (
  `crad` int(11) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  `description` varchar(20) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`crad`),
  KEY `name_desc_index` (`name`,`description`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 

索引信息:

            crad是主键索引      [name,description]是联合索引

explain select * from sys_user_role order by user_id;

由上图可以发现,执行计划的额外信息Extra:Using filesort这是为啥呢?

解析:这是因为我们查询出来的数据 需要在进行一次排序按照user_id进行排序,我们知道from 查询出来的数据 并不是按user_id排序的,所以我们按照user_id排序,mysql就帮我们进行了一次排序,按照user_id

explain select * from xx_user order by crad;

那为什么上面的执行计划的额外信息里面没有filesort呢?

解析: 首先我这里使用的innoDB存储引擎,所以这里主键索引的叶子节点存放的是整行数据,(辅助索引叶子节点存储的是主键值)而且是有序的(b+树的特性),

当我们from 查询数据的时候,已经是按照我们的主键排序了crad的,所以当我们order by crad的时候不需要mysql再帮我们进行排序,所以没有file sort

 

明天继续......


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部