mysql左右匹配原则的用法和理解

重点:mysql的最左匹配原则其实是和where后面的查询条件顺序是没有关系的只和索引的字段顺序有关;(这里说的顺序是联合索引的顺序)
这点网上很多地方都说错了

下面我们来用代码模拟一下问题
这里我们创建一个test01表 表中有 abc 三列的复合索引

CREATE TABLE `test01` (
  `id` bigint(25) NOT NULL,
  `a` bigint(255) DEFAULT NULL,
  `b` bigint(255) DEFAULT NULL,
  `c` bigint(255) DEFAULT NULL,
  `d` bigint(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `abc` (`a`,`b`,`c`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  • 对于 回表查询 的测试结果
  1. 按照联合索引的顺序查询结果,可以看到是走了索引的。

在这里插入图片描述

  1. 不按照联合索引顺序查询 ,也是走索引的
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
  2. 不按照索引的顺序查询,是不走索引的
    在这里插入图片描述
    在这里插入图片描述
  • 对于覆盖索引的测试结果
  1. 按照联合索引的顺序查询结果,可以看到是走了索引的。
    在这里插入图片描述

  2. 不按照联合索引顺序查询 ,也是走索引的
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

总结:通过以上的测试可以看到,对于联合索引,查询时 如果走的是回表查询 走不走索引是和where后面的 字段顺序没有关系的只和联合索引的顺序有关;
查询时如果时 覆盖索引 查询,走不走索引就和任何顺序没有任何关系了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值