mysql 组合索引 排序_mysql一般组合索引分析及验证最左原则和索引重排序

1、建表语句

CREATE TABLE `temp` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`aaa` varchar(255) DEFAULT NULL,

`bbb` varchar(20) DEFAULT NULL,

`ccc` varchar(255) DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `INDX_ABC` (`aaa`,`bbb`,`ccc`) USING BTREE

) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4;

2、组合索引 INDX_ABC` (`aaa`,`bbb`,`ccc`)

//a

EXPLAIN SELECT * FROM temp WHERE aaa='a';

a9a1533056ee1e8419ee1a5990f1cd5d.png

//ab

EXPLAIN SELECT * FROM temp WHERE aaa='a' AND bbb='b';

38906cc8437da505a7aa90ebac23f44a.png

//ac

EXPLAIN SELECT * FROM temp WHERE aaa='a' AND ccc='c';

c07f9cbf023f934caea6e709a223f92f.png

//abc

EXPLAIN SELECT * FROM temp WHERE aaa='a' AND bbb='b' AND ccc='c';

20777e8926a3a8812f7c13fcf6df2cfa.png

//acb

EXPLAIN SELECT * FROM temp WHERE aaa='a' AND ccc='c' AND bbb='b' ;

c2a5b53d4fa96a2ae82fc7b2bf532f69.png

//b

EXPLAIN SELECT * FROM temp WHERE bbb='b';

6ed93cd1ec864bcbb8a9b73a60cbc087.png

//bc

EXPLAIN SELECT * FROM temp WHERE bbb='b' AND ccc='c';

add58f9bdf658e257eef97ff1c0433c3.png

//bca

EXPLAIN SELECT * FROM temp WHERE bbb='b' AND ccc='c'AND aaa='a';

222973e3242664d33b7c69898c123ec3.png

//c

EXPLAIN SELECT * FROM temp WHERE ccc='c';

eb16d1d48460ca8df60754e092ad800c.png

//cb

EXPLAIN SELECT * FROM temp WHERE ccc='c' AND bbb='b';

412a651410686d0d719750b824d65e42.png

//ca

EXPLAIN SELECT * FROM temp WHERE ccc='c' AND aaa='a';

58d4d5472f585d060d3fddc089814009.png

//cba

EXPLAIN SELECT * FROM temp WHERE ccc='c' AND bbb='b' AND aaa='a';

b7c0ff5ad1b2a8054db81d84579cdf1c.png

//cab

EXPLAIN SELECT * FROM temp WHERE ccc='c' AND aaa='a' AND bbb='b' ;

8ba9a1a70c20afbacecf45483d006b12.png

通过分析上面13种组合发现   a/ab/abc/bac/bca/cab/cba 都会走索引。如果只按照组合索引的最左原则,则只会有a/ab/abc 这三种情况走索引,但是bac/bca/cab/cba这些情况下也走了索引,不但说明组合索引可以满足最左索引的规则,也说明组合索引重排序的存在。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值