mysql 数据连续不走索引6_MySql组合索引最左侧原则失效
最近在看MySQL索引的知識(shí),看到組合索引的時(shí)候,有一個(gè)最左側(cè)原則,我就建了個(gè)簡單的表驗(yàn)證一下,過程中碰到有些不懂的,在這里求教一下,mysql版本5.7的
CREATE TABLE `testp` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`users_id` int(10) unsigned NOT NULL COMMENT '學(xué)生用戶ID',
`activity_id` int(11) NOT NULL COMMENT '活動(dòng)ID',
`phone` varchar(20) NOT NULL COMMENT '手機(jī)號(hào)碼',
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');
表結(jié)構(gòu)如上,
把a(bǔ)ctivity_id,users_id組合一下,navicat上信息如下圖:
首先運(yùn)行第一條sql:
EXPLAIN SELECT * FROM `testp` WHERE activity_id=17 AND users_id=272002;
其結(jié)果如下圖:
發(fā)現(xiàn)key這個(gè)列有值,這個(gè)是對(duì)的
然后我運(yùn)行如下sql:
EXPLAIN SELECT * FROM `testp` WHERE activity_id=17;
結(jié)果是:
發(fā)現(xiàn)沒有使用到索引,正常情況不是可以使用到索引嗎?
之后我又去試了把 activity_id=17改成 activity_id=19:
EXPLAIN SELECT * FROM `testp` WHERE activity_id=19;
結(jié)果:
結(jié)果顯示使用到了索引
也就是說這個(gè)和值也有關(guān)系???請各位解答下,謝謝!!
之前以為是Unique類型的原因,我把Unique改成Normal結(jié)果還是一樣的。
總結(jié)
以上是生活随笔為你收集整理的mysql 数据连续不走索引6_MySql组合索引最左侧原则失效的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 5000字超干货,新中国成立70年人口流
- 下一篇: 世界第一行销之神杰 亚伯拉罕首次中国大陆