首页 > 解决方案 > MySQL Explain 语句:所有属性均为空值

问题描述

假设我们有一个具有以下结构的表(我尝试对其进行格式化,它在预览中看起来不错,但在发布后失败):
| 编号 | col_a | col_b|
|:--:|:--:|:--:|
|1|0|0|

这是创建表 DDL(唯一的索引是主键):

CREATE TABLE `meta` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'record\'s id',
`col_a` int(10) unsigned NOT NULL COMMENT 'value 1',
`col_b` int(10) unsigned NOT NULL COMMENT 'value 2',

PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COMMENT='meta';

然后我们为以下查询执行 EXPLAIN 语句:
explain select * from meta where id=2 and col_a = 1 and col_b=1;

这是输出: 解释

请问为什么所有属性都是NULL?我确实做了一些研究,但它们都与NULL键值有关,没有一个解释为什么其余的都是NULL以及它们的含义。

干杯

标签: mysql

解决方案


正如解释的额外部分所示,没有与您的 where 子句匹配的记录,因此执行任何分析都没有意义。使用返回某些值的 where 子句运行解释。请注意,在小表上运行解释也可能产生奇怪的输出,因为在这种情况下,mysql 执行全表扫描而不是使用索引可能更便宜。


推荐阅读