查看explain中的key_len判断究竟用了哪个索引_MySQL教程,explain
作者:搜教程发布时间:2020-03-30分类:MySQL教程浏览:40评论:0
查看explain中的key_len判断究竟使用了哪个索引?关于MySQL涉及锁的问题详解_MySQL教程
首先呢,锁是一种并发控制技术,锁是用来在多个用户同时访问同一个数据的时候保护数据的。
在一张表里有多个索引 , 我们where字段里条件有多个索引的值 , 那么究竟使用的哪个呢?
推荐:《mysql视频教程》
我们可以使用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 | +----+-------------+--------------------+------------+-------+-------------------------+---------+---------+-------+------+----------+-------+
掌握四大MySQL知识点,就可吊打面试官!_MySQL教程
作为一名后端开发,MySQL的使用必不可少,合理的使用索引和索引调优是后端开发者必须掌握的技能之一。 在日常数据库的问题当中,不合理的使用索引占大部分。
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判断究竟用了哪个索引的详细内容,更多请关注ki4网其它相关文章!
关于MySQL8.0 InnoDB并行执行的详解_MySQL教程
MySQL经过多年的发展已然成为最流行的数据库,广泛用于互联网行业,并逐步向各个传统行业渗透。之所以流行,一方面是其优秀的高并发事务处理的能力,另一方面也得益于MySQL丰富的生态。
标签:explain
相关推荐
- MySQL中explain用法和结果分析(详解)_MySQL教程,MySQL,explain
- mysql explain的作用是什么?_MySQL教程,mysql,explain
- 在MySQL中的explain中的using where和using index【MySQL教程】,mySQL,explain
- 关于mysql explain中key_len的计算方法解说【MySQL教程】,mysql,explain
- Mysql数据库机能优化神器——explain关键字【MySQL教程】,explain
- 在MySQL中的explain中的using where和using index【MySQL教程】,mySQL,explain
- 关于mysql explain中key_len的计算方法解说【MySQL教程】,mysql,explain
- MySQL中explain的运用以及机能剖析【MySQL教程】,explain,MySQL,性能
你 发表评论:
欢迎- MySQL教程排行
-
- 1如何修改mysql的默认时区_MySQL教程,mysql,时区
- 2linux源码安装mysql5.7_MySQL教程,linux,mysql,mysql5.7
- 3MySQL 连接查询超级详解_MySQL教程,MySQL,连接查询
- 4mysql数据库如何创建数据表_MySQL教程,mysql,数据表
- 5mysql外键约束怎么写_MySQL教程,mysql,外键约束
- 6MySQL如何使用授权命令grant_MySQL教程,MySQL,grant
- 7sql数据库触发器怎么创建_MySQL教程,sql,触发器
- 8MySQL中explain用法和结果分析(详解)_MySQL教程,MySQL,explain
- 9mysql如何设置字符集为UTF8_MySQL教程,mysql,UTF8,字符集
- 最新文章
- 广而告之