Mysql-explain-Impossible WHERE noticed after reading const tables

测试mysql中的最左匹配原则时,出现这样一条提示信息
在这里插入图片描述
没有表明type(ref/All)是否使用索引等信息,因此了解一下。
上图是没有匹配到相关数据,贴一张匹配到数据的信息展示,发现type是const

在这里插入图片描述
表结构如下:

CREATE TABLE `runtime_image_used` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `image_name` varchar(512) DEFAULT NULL ,
  `image_tag` varchar(100) DEFAULT NULL,
  `env_id` int(11) DEFAULT NULL ,
  `use_count` tinyint(1) DEFAULT NULL COMMENT '使用标识,0: 下线 1: 使用 ',
  `image_catalog_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `unique` (`image_name`,`image_tag`,`env_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC

env_id、image_name、image_tag三列信息是一个联合唯一索引。当改动查询条件env_id 为use_count时,发现出现了正常的提示信息
在这里插入图片描述
根据MySQL:浅析 Impossible WHERE noticed after reading const tables中解释。满足下列四个条件时,针对该表的查询最多只能产生一条命中结果,因此信息展示不同,是 MySQL 的一个优化策略。

  • 当查询条件中包含了某个表的主键或者非空的唯一索引列
  • 该列的判定条件为等值条件
  • 目标值的类型与该列的类型一致
  • 目标值为一个确定的常量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值