mysql 数据连续不走索引6_MySql组合索引最左侧原则失效

最近在看MySQL索引的知识,看到组合索引的时候,有一个最左侧原则,我就建了个简单的表验证一下,过程中碰到有些不懂的,在这里求教一下,mysql版本5.7的

CREATE TABLE `testp` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`users_id` int(10) unsigned NOT NULL COMMENT '学生用户ID',

`activity_id` int(11) NOT NULL COMMENT '活动ID',

`phone` varchar(20) NOT NULL COMMENT '手机号码',

PRIMARY KEY (`id`),

UNIQUE KEY `idx_activity_users` (`activity_id`,`users_id`) USING BTREE

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='名表';

-- ----------------------------

-- Records of testp

-- ----------------------------

INSERT INTO `testp` VALUES ('1', '272002', '17', '12345678900');

INSERT INTO `testp` VALUES ('2', '290253', '19', '12345678900');

INSERT INTO `testp` VALUES ('3', '177652', '17', '12345678900');

INSERT INTO `testp` VALUES ('4', '36482', '17', '12345678900');

INSERT INTO `testp` VALUES ('5', '36482', '19', '12345678900');

INSERT INTO `testp` VALUES ('6', '290253', '17', '12345678900');

INSERT INTO `testp` VALUES ('7', '272207', '17', '12345678900');

INSERT INTO `testp` VALUES ('8', '272207', '19', '12345678900');

表结构如上,

把activity_id,users_id组合一下,navicat上信息如下图:

4bf389bfe2a31a1421f2de1c3c99ea77.png

首先运行第一条sql:

EXPLAIN SELECT * FROM `testp` WHERE activity_id=17 AND users_id=272002;

其结果如下图:

a4769c007009f69064746fa3119f765c.png

发现key这个列有值,这个是对的

然后我运行如下sql:

EXPLAIN SELECT * FROM `testp` WHERE activity_id=17;

结果是:

cfca87b55142845b89a5cd6437b15413.png

发现没有使用到索引,正常情况不是可以使用到索引吗?

之后我又去试了把 activity_id=17改成 activity_id=19:

EXPLAIN SELECT * FROM `testp` WHERE activity_id=19;

结果:

c2a6bb481138e7ec84ba4f85d4d657df.png

结果显示使用到了索引

也就是说这个和值也有关系???请各位解答下,谢谢!!

之前以为是Unique类型的原因,我把Unique改成Normal结果还是一样的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值