自己动手看看mysql索引怎么走

自己动手看看mysql索引怎么走
文章图片

逛V站遇到这个问题,也有点懵,看到评论答案五花八门,还是自己动手试下吧。
1.建一个表:
自己动手看看mysql索引怎么走
文章图片

2.插入10000条数据

DROP PROCEDURE IF EXISTS proc_initData; --如果存在此存储过程则删掉 DELIMITER $ CREATE PROCEDURE proc_initData() BEGIN DECLARE i INT DEFAULT 1; WHILE i<=10000 DO INSERT INTO test(id,a,b,c) VALUES(i,i,i,i); SET i = i+1; END WHILE; END $ CALL proc_initData();

自己动手看看mysql索引怎么走
文章图片

3.建索引
ALTER table test ADD INDEX indextest(a,b,c);

4.测试
explain select * from test where a=1;

【自己动手看看mysql索引怎么走】自己动手看看mysql索引怎么走
文章图片

explain select * from test where a=1 and b > 2;

自己动手看看mysql索引怎么走
文章图片

explain select * from test where a=1 and b > 2 order by c;

自己动手看看mysql索引怎么走
文章图片

由此可知,确实满足最左匹配会使用索引没有问题,a 等值,b 范围,ab会使用到索引,范围后的操作不会使用索引,c不会用到索引,但总体来看还是用到了组合索引。

    推荐阅读