我有一张桌子:

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/

10-11 02:34
查看更多