mysql中关于关联索引的问题

Posted 奋斗的小鸟gogogo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql中关于关联索引的问题相关的知识,希望对你有一定的参考价值。

情况描述:在mysql的user表中,对a,b,c三个字段建立联合索引,那么查询时使用其中的2个作为查询条件,是否还会走索引?

 

根据查询字段的位置不同来决定,如查询a,     a,b    a,b,c    a,c   都可以走索引的,其他条件的查询不能走索引。

组合索引 有“最左前缀”原则。就是只从最左面的开始组合,并不是所有只要含有这三列存在的字段的查询都会用到该组合索引。

 

验证过程如下所示:

首先,在SQLyog中建立一个user表,如下图所示;

对中间3个字段(user_name,user_age,user_password)进行联合索引 index_user_join

查询情况如下所示:

1.同时查询这3个字段作为条件的SQL,索引情况及SQL语句如下所示:

SELECT *FROM t_user WHERE  user_name=\'zs\' AND user_age=20 AND user_password=\'123456\';

其使用索引情况如下所示:

从执行结果上可以看到是从走索引进行查询的

2.使用user_age和user_password作为查询条件进行查询,索引及SQL语句如下所示:

 

3.使用user_name和user_password作为查询条件进行查询,索引及SQL语句如下所示:

 

 

4.使用user_name作为查询条件进行查询,索引及SQL语句如下所示:

 

 

5.使用user_age作为查询条件进行查询,索引及SQL语句如下所示:

 

 

6.使用user_password作为查询条件进行查询,索引及SQL语句如下所示:

以上是针对普通的字段建立联合索引的测试情况及截图,欢迎小伙伴们来补充~

 

以上是关于mysql中关于关联索引的问题的主要内容,如果未能解决你的问题,请参考以下文章

CakePHP 3中关于belongsToMany关联的问题

带你整理面试过程中关于 SQL优化的相关知识

我需要在 sequelize + typescript 中关联表

MySQL之索引

说说 MySQL 子查询

在VS中关于MySQL的相关问题