重庆小潘seo博客

当前位置:首页 > 重庆网络营销 > 小潘杂谈 >

小潘杂谈

查看explain中的key_len判断究竟用了哪个索引

时间:2020-09-23 06:20:07 作者:重庆seo小潘 来源:
查看explain中的key_len判断究竟使用了哪个索引? 在一张表里有多个索引 , 我们where字段里条件有多个索引的值 , 那么究竟使用的哪个呢? 推荐:《mysql视频教程》 我们可以使用explain来查看 , 其中的key_len字段可以看得出来 比如下面这条sqlexplain select

查看explain中的key_len判断究竟使用了哪个索引?

在一张表里有多个索引 , 我们where字段里条件有多个索引的值 , 那么究竟使用的哪个呢?

推荐:《mysql视频教程》

我们可以使用explain来查看 , 其中的key_len字段可以看得出来

比如下面这条sqlexplain select * from ent_calendar_diary where email='xxxx' and diary_id=1784; +----+-------------+--------------------+------------+-------+-------------------------+---------+---------+-------+------+----------+-------+| id | select_type | table| partitions | type| possible_keys| key| key_len | ref| rows | filtered | Extra |+----+-------------+--------------------+------------+-------+-------------------------+---------+---------+-------+------+----------+-------+|1 | SIMPLE| ent_calendar_diary | NULL| const | PRIMARY,idx_email_stime | PRIMARY | 4| const |1 |100.00 | NULL|+----+-------------+--------------------+------------+-------+-------------------------+---------+---------+-------+------+----------+-------+possible_keys里面有两个索引字段 , 但是看key_len是4个字节

查看explain中的key_len判断究竟用了哪个索引

备注,key_len 只指示了WHERE中用于条件过滤时被选中的索引列,是不包含 ORDER BY/GROUP BY

int类型并且not null 是4个字节 , 因此上面的sql是使用的主键索引explain select * from ent_calendar_diary where email='xxxx';+----+-------------+--------------------+------------+------+-----------------+-----------------+---------+-------+------+----------+-------+| id | select_type | table| partitions | type | possible_keys| key| key_len | ref| rows | filtered | Extra |+----+-------------+--------------------+------------+------+-----------------+-----------------+---------+-------+------+----------+-------+|1 | SIMPLE| ent_calendar_diary | NULL| ref| idx_email_stime | idx_email_stime | 767| const |111 |100.00 | NULL|+----+-------------+--------------------+------------+------+-----------------+-----------------+---------+-------+------+----------+-------+这个是767个字节 , varchar(255)not null255 * 3 +2正好符合 , 因此是使用的email那个普通索引CREATE TABLE `ent_calendar_diary` (`diary_id` int(10) unsigned NOT NULL AUTO_INCREMENT,`email` varchar(255) NOT NULL,`title` varchar(100) NOT NULL,`summary` varchar(500) NOT NULL DEFAULT '',`stime` bigint(11) NOT NULL DEFAULT '0',`ctime` int(10) unsigned NOT NULL DEFAULT '0',PRIMARY KEY (`diary_id`),KEY `idx_email_stime` (`email`,`stime`)) ENGINE=InnoDB AUTO_INCREMENT=1809 DEFAULT CHARSET=utf8以上就是查看explain中的key_len判断究竟用了哪个索引的详细内容,更多请关注小潘博客其它相关文章!