MySQL复合索引个人理解

MySQL的复合索引有一个最左匹配原则,举例说明:

创建数据表如下:

添加测试数据:

创建复合索引,包含a,b,c三个字段,并查看索引性信息

<1> 使用a,b,c作为where查询条件,explain查看执行计划:使用了索引

<2> 使用a,c作为where查询条件,explain查看执行计划:使用了索引

<3> 使用a作为where查询条件,explain查看执行计划:使用了索引

<4> 使用b,c作为where查询条件,explain查看执行计划:没有使用索引,因为最左匹配原则,索引字段为”a,b,c“,a字段在最左边,

<5> 使用b作为where查询条件,explain查看执行计划:没有使用索引

<6> 使用b,c,a作为where查询条件,explain查看执行计划:使用了索引,也就是说用到索引,与where语句中字段出现的顺序无关

<7> 使用复合索引中的部分索引(最左那个字段)和没有索引的字段作为查询条件,explain查看执行计划:使用了索引

但如果使用的是复合索引中的部分索引不是最左那个字段,如b字段和不是索引的c字段作为查询条件,explain执行计划:没有用到索引

  • 补充:like的模糊查询也有一个原则:最左前缀原则,就是说like的字段值在通配符左边,如” where a like '123%' “,会用到索引

查询字段值在通配符%右边,如” where a like ‘%123’ “,不会用到索引

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值