mysql - 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以及它们的含义。
干杯
解决方案
正如解释的额外部分所示,没有与您的 where 子句匹配的记录,因此执行任何分析都没有意义。使用返回某些值的 where 子句运行解释。请注意,在小表上运行解释也可能产生奇怪的输出,因为在这种情况下,mysql 执行全表扫描而不是使用索引可能更便宜。
推荐阅读
- python - 如何在要过滤的列中过滤具有重复值的 Python pandas 数据框中的行
- c# - 如何同步树视图
- c++ - 如何使用 MITK 作为库
- mysql - 为什么我无法更新 MySQL 中的列中的数据
- node.js - 如何从 aws-cloud-directory 获取所有用户的数据?
- html - 如何在 bs4 中集中并缩小轮播中两个图像之间的差距?
- html - 如何在 Elm 中围绕文本使用 span?
- nginx - 带和不带通配符的 nginx 域
- python - 如何制作所有列和行的坐标列表
- flutter - SingleChildScrollView 中的 Flutter CustomPaint 未显示