千家信息网

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

发表于:2024-10-21 作者:千家信息网编辑
千家信息网最后更新 2024年10月21日,如何查看explain中的key_len判断究竟用了哪个索引?很多人都不太了解,今天小编为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。在一张表里有多个索引 , 我们w
千家信息网最后更新 2024年10月21日如何查看explain中的key_len判断究竟用了哪个索引

如何查看explain中的key_len判断究竟用了哪个索引?很多人都不太了解,今天小编为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。

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

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

比如下面这条sql

explain 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个字节

备注,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 null 255 * 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判断究竟用了哪个索引就分享到这里了,当然并不止以上和大家分析的办法,不过小编可以保证其准确性是绝对没问题的。希望以上内容可以对大家有一定的参考价值,可以学以致用。如果喜欢本篇文章,不妨把它分享出去让更多的人看到。

索引 字段 字节 内容 多个 条件 普通 学以致用 两个 价值 准确性 办法 备注 指示 文章 更多 看吧 类型 表里 问题 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发者能看到手机信息吗 win 10自带的媒体服务器 电脑网络安全概念股 软件开发企业有9%的税率 肖战与网络安全家园 河北兆美网络技术 怎么看阿里云服务器有多大 简介网络安全防护技术 徐州市好推网络技术 安卓数据库怎么查询 技术支持工程师软件开发工程师 魔兽世界哪个服务器资源最好 新萌网络技术 数据库的两个印象 新华社对媒体数据库 组态王服务器不支持质量写入 和平精英体验服服务器维修中 数据库能用红黑树么 火影服务器注册人数已满怎么办 沈阳申鑫软件开发公司 传奇一个服务器最多开多少个区 华硕路由器不能映射服务器端口 柳州市软件开发实习生最低工资 浙江dell服务器采购 网络安全对社会的变革有哪些 Excle数据导入数据库 和平精英体验服服务器维修中 三级网络技术考纲有变化吗 全球数据库背调 无基础学软件开发去哪个学校好
0