我有一张桌子:
CREATE TABLE `test` (
`pk` INT(11) NOT NULL AUTO_INCREMENT,
`index_col` INT(11) NULL DEFAULT '0',
PRIMARY KEY (`pk`)
)
ENGINE=InnoDB
AUTO_INCREMENT=5
;
表中没有任何数据。
我有个疑问:
explain select * from test;
它在解释中显示:
行数:1
过滤:100
如果表中根本没有数据,它从哪里得到这1行?
最佳答案
在MySQL
中,EXPLAIN
返回查询的执行计划,而不是实际结果。这就是documentation所说的:
当EXPLAIN与可解释语句一起使用时,MySQL将显示
来自优化器的有关语句执行计划的信息。
也就是说,MySQL解释了它将如何处理语句,包括
有关表的联接方式和顺序的信息。
执行计划以表格形式表示,输出中的1row
实际上是执行计划的行,而不是查询输出。此输出显示每个表一行,因此,如果查询中有多个表,则无论实际查询结果如何,都将在输出中看到两行。
Here's输出格式的详细说明。
关于mysql - 当表中完全没有数据时,MySQL说明在“行”中显示1行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45645066/